从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆
ProGuard doesn't obfuscate when building alternative buildType from Android Studio
所以简而言之,当我从 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 申请并得到这样的结果:
- 发布 - 混淆
- releaseDebug - 未混淆
- 调试 - 不混淆
当我使用 "Generate Signed APK..." 选项时:
- 发布 - 混淆
- releaseDebug - 混淆
- 调试 - 不混淆
是构建系统问题还是我遗漏了什么?
P.S。只是为了澄清,已经为 releaseDebug 构建类型启用了 minifyEnabled,ProGuard 正在运行,但在这种特殊情况下不起作用。这与调试模式无关。
最后,经过一些测试,我发现这个问题是由 releaseDebug 配置中的 debuggable true
语句引起的。
因此,如果您在替代构建类型中使用 debuggable true
和 minifyEnabled true
语句,Android Studio(或 Gradle)将不会使用 ProGuard 混淆。
所以简而言之,当我从 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 申请并得到这样的结果:
- 发布 - 混淆
- releaseDebug - 未混淆
- 调试 - 不混淆
当我使用 "Generate Signed APK..." 选项时:
- 发布 - 混淆
- releaseDebug - 混淆
- 调试 - 不混淆
是构建系统问题还是我遗漏了什么?
P.S。只是为了澄清,已经为 releaseDebug 构建类型启用了 minifyEnabled,ProGuard 正在运行,但在这种特殊情况下不起作用。这与调试模式无关。
最后,经过一些测试,我发现这个问题是由 releaseDebug 配置中的 debuggable true
语句引起的。
因此,如果您在替代构建类型中使用 debuggable true
和 minifyEnabled true
语句,Android Studio(或 Gradle)将不会使用 ProGuard 混淆。