android - 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'
}
}
解决方案
minifyEnabled
不会阻止调试您的代码,它会启用代码压缩、混淆和优化,如此处所述。
您需要将debuggable
flag 设置为 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 中看到代码被缩小,则您的代码应该被缩小,也许您的意思是即使缩小了它也是可调试的。
推荐阅读
- python-xarray - 使用 map_blocks 沿指定维度求和
- database - ER图(是否创建新实体)
- excel - 如何在openpyxl的数据验证列表中显示/显示超过8行?
- msal.js - 保存 MSAL 缓存,即使在重新加载浏览器时也是如此?
- python - PySpark 2.2中数组列的每个元素的子串
- reactjs - 从父级访问子级属性(状态?)
- c++ - 如何将可播放的音频文件添加到 TableListBox 播放列表(JUCE C++)
- python - 劫持轮廓模型
- python - 为什么 gensim FastText 模型的大小比 Facebook 的原生 Fasttext 模型小?
- angular - NgRx 效果单元测试混淆了 Jasmine 间谍调用计数