如何为 jenkins 构建具有多种风格的应用程序设置 dexguard?
Posted
技术标签:
【中文标题】如何为 jenkins 构建具有多种风格的应用程序设置 dexguard?【英文标题】:How to set up dexguard for jenkins builds on app with multiple flavors? 【发布时间】:2019-11-15 19:18:49 【问题描述】:我有一个具有多种风格的应用程序,我正在使用 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\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 ?
【问题讨论】:
【参考方案1】:dexguard-license1.txt 不会被考虑在内,如果您有额外的许可证文件,请从 dexguard-license2.txt 开始。
【讨论】:
` 找不到 DexGuard 许可证文件。您应该将您的许可证文件 dexguard-license.txt 1) 放在由 Java 系统属性“dexguard.license”定义的位置,2) 放在由操作系统环境变量“DEXGUARD_LICENSE”定义的位置,3) 在您的主目录中, 4) 在类路径中,或 5) 在与 DexGuard jar 相同的目录中(不能与 Gradle v3.1+ 结合使用)。 `@T。内德哈特【参考方案2】:解决了: 将此代码添加到每个模块的 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'
【讨论】:
以上是关于如何为 jenkins 构建具有多种风格的应用程序设置 dexguard?的主要内容,如果未能解决你的问题,请参考以下文章
如何为具有多种语言的词汇列表应用程序制作数据库,例如谷歌翻译?