【问题标题】:How to set up dexguard for jenkins builds on app with multiple flavors?如何为 jenkins 构建具有多种风格的应用程序设置 dexguard?
【发布时间】: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 ?

【问题讨论】:

    标签: android jenkins gradle 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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多