【问题标题】:ProGuard doesn't obfuscate when building alternative buildType from Android Studio从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆
【发布时间】:2016-11-02 07:48:45
【问题描述】:

简而言之,当我从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆源代码,但在我使用“生成签名的 APK...”选项来创建 apk 文件时工作。

还有更多细节:Android Studio 2.1.1,Gradle 版本:2.10,插件版本 .2.1.0

我有 3 种构建类型,配置如下:

buildTypes {
    release {
        minifyEnabled true
        ...
        proguardFile 'proguard-rules.pro'
        proguardFile getDefaultProguardFile('proguard-android.txt')
        signingConfig signingConfigs.release
    }
    releaseDebug {
        debuggable true
        minifyEnabled true
        ...
        proguardFile 'proguard-rules.pro'
        proguardFile getDefaultProguardFile('proguard-android.txt')
        signingConfig signingConfigs.release
    }
    debug {
        debuggable true
        minifyEnabled false
        ...
        proguardFile getDefaultProguardFile('proguard-android.txt')
        testProguardFile 'proguard-rules-test.pro'
        signingConfig signingConfigs.release
    }
}

我直接从 Android Studio 运行应用程序并得到这样的结果:

  • 发布 - 混淆
  • releaseDebug - 混淆
  • 调试 - 未混淆

当我使用“生成签名的 APK...”选项时:

  • 发布 - 混淆
  • releaseDebug - 混淆
  • 调试 - 未混淆

是构建系统问题还是我遗漏了什么?

附:只是为了澄清,已经为 releaseDebug 构建类型启用了 minifyEnabled 并且 ProGuard 正在工作,但在这种特殊情况下不是。这与调试模式无关。

【问题讨论】:

标签: android android-studio android-gradle-plugin android-build android-proguard


【解决方案1】:

最后,经过一些测试,我认识到这个问题是由 releaseDebug 配置中的debuggable true 语句引起的。

因此,如果您在替代构建类型中使用 debuggable trueminifyEnabled true 语句,Android Studio(或 Gradle)将不会使用 ProGuard 混淆。

【讨论】:

  • 让人们信任 Android 工具链。
  • 但是否存在可调试 true && minifyEnabled true 的可能性?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 2019-09-28
  • 2013-02-09
  • 1970-01-01
相关资源
最近更新 更多