如何为Jenkins设置DexGuard以多种口味在应用程序上构建



我有一个带有多种口味的应用程序,我在使用dexguard,我决定在詹金斯上进行设置。DexGuard许可证位于/App/Flavor/for EASH许可证中,但Jenkins总是从最后的风味中获得许可证。错误代码失败:

来自androidmanifest.xml文件的软件包名称[com.example.android.flavor1.something]不匹配软件包名称[com.example.android.flavor6.something,com.example.android.flavor6.test.test,com.example.android.flavor6.something.prod,com.example.android.flavor6.test]来自您的dexguard许可[c: users users currentuser androidStudioprojects androidStudioprojects myApp myApp myApp myapp floaim6 dexguard-license.txt]

我尝试将dexguard.license重命名为dexguard-licensex.txt(其中x是风味的数量(,并在Flavors build中设置了设置。我还尝试在Gradle中设置许可证位置。使用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复制到Home文件夹(这不是本地问题,但这是Jenkins上的问题(。

有没有办法在Jenkins上设置DexGuard?

dexguard-license1.txt将不考虑,如果您有其他许可证文件,请从dexguard-license2.txt开始。

解决了:将此代码添加到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 ""
  }
}

and buildTypes-release:

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

最新更新