从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆

Posted

技术标签:

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

简而言之,当我源代码,但在我使用“生成签名的 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 正在工作,但在这种特殊情况下不是。这与调试模式无关。

【问题讨论】:

Is it possible to use proguard in debug mode?的可能重复 我很抱歉,但不是。 ProGuard 正在工作,但不是在一种特定情况下。这与调试模式无关。 【参考方案1】:

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

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

【讨论】:

让人们信任 Android 工具链。 但是否存在可调试 true && minifyEnabled true 的可能性?

以上是关于从 Android Studio 构建替代 buildType 时,ProGuard 不会混淆的主要内容,如果未能解决你的问题,请参考以下文章

错误记录Android Studio 中 Gradle 面板 Task 不显示问题 ( 菜单栏 / File / Settings / Experimental 取消勾选 Do not bui )

android studio2021.3.1 最新xposed模块编写指南

是否有必要安装 Android Studio 以实现颤振或啥可以替代 android studio?

如何从 Android Studio 为 Flutter 构建签名的 apk

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )

Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )