如何为 jenkins 设置 dexguard 构建在具有多种口味的应用程序上?
How to set up dexguard for jenkins builds on app with multiple flavors?
我有一个使用 dexguard 的多种风格的应用程序,我决定在 Jenkins 上设置它。
Dexguard 许可证位于 /app/flavor/ eash 许可证,但 Jenkins 总是从最后一个版本中获取许可证。
构建失败,错误代码:
The package name from the AndroidManifest.xml file [com.example.android.flavor1.something] doesn't match the package name [com.example.android.flavor6.something,com.example.android.flavor6.test,com.example.android.flavor6.something.prod,com.example.android.flavor6.test] from your DexGuard license [C:\Users\CurrentUser\AndroidStudioProjects\MyApp\flavor6\dexguard-license.txt]
我已经尝试将 dexguard.license 重命名为 dexguard-licenseX.txt(其中 X 是风味的数量)并设置风味 build.gradle 以查找该名称,但不能甚至找到许可证文件。
我还尝试使用 systemProp.dexguard.licence=./flavor1
.
在 gradle.properties 中设置许可证位置
我目前正在使用
release {
System.properties['dexguard.license'] = buildscript.sourceFile.parent
proguardFiles getDefaultDexGuardFile('dexguard-release.pro'), 'dexguard-rules.pro', 'proguard-rules.pro'
}
只有当我尝试构建最后一个版本时才有效,否则我必须将 dexguard-license 复制到主文件夹(这在本地不是问题,但在 Jenkins 上是个问题)。
有没有办法在 jenkins 上设置 dexguard?
dexguard-license1.txt不考虑,如果有额外的license文件就从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 ""
}
}
和 buildTypes-release 中的这个:
if (getCurrentModule() == ":currentModule:") {
System.properties['dexguard.license'] = buildscript.sourceFile.parent
}
proguardFiles getDefaultDexGuardFile('dexguard-release.pro'), 'dexguard-rules.pro', 'proguard-rules.pro'
我有一个使用 dexguard 的多种风格的应用程序,我决定在 Jenkins 上设置它。 Dexguard 许可证位于 /app/flavor/ eash 许可证,但 Jenkins 总是从最后一个版本中获取许可证。 构建失败,错误代码:
The package name from the AndroidManifest.xml file [com.example.android.flavor1.something] doesn't match the package name [com.example.android.flavor6.something,com.example.android.flavor6.test,com.example.android.flavor6.something.prod,com.example.android.flavor6.test] from your DexGuard license [C:\Users\CurrentUser\AndroidStudioProjects\MyApp\flavor6\dexguard-license.txt]
我已经尝试将 dexguard.license 重命名为 dexguard-licenseX.txt(其中 X 是风味的数量)并设置风味 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 复制到主文件夹(这在本地不是问题,但在 Jenkins 上是个问题)。
有没有办法在 jenkins 上设置 dexguard?
dexguard-license1.txt不考虑,如果有额外的license文件就从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 ""
}
}
和 buildTypes-release 中的这个:
if (getCurrentModule() == ":currentModule:") {
System.properties['dexguard.license'] = buildscript.sourceFile.parent
}
proguardFiles getDefaultDexGuardFile('dexguard-release.pro'), 'dexguard-rules.pro', 'proguard-rules.pro'