我有一个带有多种口味的应用程序,我在使用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'