首页 文章

从Android Studio构建备用buildType时,ProGuard不会混淆

提问于
浏览
3

所以简单来说,当我从Android Studio构建替代buildType时ProGuard不会混淆源代码,但是当我使用“Generate Signed 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运行应用程序并得到这样的结果:

  • release - 混淆了

  • releaseDebug - NOT 混淆了

  • debug - 没有混淆

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

  • release - 混淆了

  • releaseDebug - 混淆了

  • debug - 没有混淆

这是构建系统问题还是我错过了什么?

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

1 回答

  • 2

    最后,经过一些测试,我发现这个问题是由 releaseDebug 配置中的 debuggable true 语句引起的 .

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

相关问题