Как настроить dexguard для сборок jenkins на приложение с несколькими вариантами? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть приложение с несколькими вариантами, где я использую dexguard, и я решил настроить его на Jenkins.Лицензии Dexguard находятся в / app / flavor / для лицензии eash, но Jenkins всегда берет лицензию из последней версии.Сборка завершается ошибкой с кодом ошибки:

Имя пакета из файла AndroidManifest.xml [com.example.android.flavor1.something] не соответствует имени пакета [com.example.android.flavor6.something, com.example.android.flavor6.test, com.example.android.flavor6.something.prod, com.example.android.flavor6.test] из вашей лицензии DexGuard [C: \ Users \ CurrentUser \ AndroidStudioProjects\ MyApp \ flav6 \ dexguard-license.txt]

Я попытался переименовать dexguard.license в dexguard-licenseX.txt (где X - номер флейвора) и установить в ароматах build.gradle дляищите это имя, которое даже не могло найти файл лицензии.Я также попытался настроить расположение лицензии в gradle.properties с помощью systemProp.dexguard.licence=./flavor1.

. В настоящее время я использую

release {
     System.properties['dexguard.license'] = buildscript.sourceFile.parent
     proguardFiles getDefaultDexGuardFile('dexguard-release.pro'), 'dexguard-rules.pro', 'proguard-rules.pro'
}

И это работает, только если я пытаюсь создать последний вариантв противном случае я должен скопировать dexguard-license в домашнюю папку (что не является проблемой локально, но это проблема для Jenkins).

Есть ли способ настроить dexguard на jenkins?

Ответы [ 2 ]

1 голос
/ 05 июля 2019

dexguard-license1.txt не будет учитываться, начните с dexguard-license2.txt, если у вас есть дополнительные файлы лицензий.

0 голосов
/ 08 июля 2019

решено: Добавлен этот код в build.gradle каждого модуля:

def getCurrentModule() {
Gradle gradle = getGradle()
String  tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

if(tskReqStr.indexOf( ":currentModule:" ) >= 0 )
    return ":currentModule:"
else
  {
    println "NO MATCH FOUND"
    return ""
  }
}

и это в buildTypes-релизе:

if (getCurrentModule() == ":currentModule:") {
            System.properties['dexguard.license'] = buildscript.sourceFile.parent
        }
        proguardFiles getDefaultDexGuardFile('dexguard-release.pro'), 'dexguard-rules.pro', 'proguard-rules.pro'
...