首页 > 解决方案 > Android Studio 调试“应用程序”不尊重 minifyEnabled

问题描述

我的 gradle 配置如下。我为调试和发布模式启用了 minifyEnabled。但只有在发布模式下,代码才会被混淆。如果我点击Android Studio上的调试按钮,minifyEnabled似乎不起作用,我仍然可以使用断点调试,并且proguard文件也没有生效。但是,如果我构建一个调试模式 apk,minifyEnabled 标志和 proguard 文件工作,这是由 apk 分析验证。

正常吗?我所知道的是,如果您在调试模式下启用了 minifyEnabled,那么调试器将无法工作。

buildTypes {
  debug {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-debug.txt'
  }
  release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.txt'
  }
}

标签: androidandroid-studioproguardobfuscation

解决方案


minifyEnabled不会阻止调试您的代码,它会启用代码压缩、混淆和优化,如此所述。

您需要将debuggableflag 设置为 false 以防止调试:

buildTypes {
  debug {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-debug.txt'
  }
  release {
    debuggable false
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.txt'
  }
}

关于仅在 release buildType 中起作用的混淆,这可能是由于您的 proguard 规则特定于调试构建变体 ( proguard-rules-debug.txt)。但是,如果您在已编译的 apk 中看到代码被缩小,则您的代码应该被缩小,也许您的意思是即使缩小了它也是可调试的。


推荐阅读