所以简单来说,当我从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 回答
最后,经过一些测试,我发现这个问题是由 releaseDebug 配置中的
debuggable true
语句引起的 .因此,如果在替代构建类型中使用
debuggable true
和minifyEnabled true
语句,Android Studio(或Gradle)将不会使用ProGuard混淆 .