android - 为什么 minifyEnabled 在默认情况下在发布版本中为 false?
问题描述
在 build.gradle (app) 文件中我们默认有这个,
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
根据https://developer.android.com/studio/build/shrink-code,
minifyEnabled true
使代码更安全(使其难以进行逆向工程)并缩小发布版本的大小,我们用于发布应用程序。
我知道 usingminifyEnabled true
会使编译时间更长,但通常调试版本用于开发和测试,无论如何都不受影响。
我正在寻找的是,minifyEnabled true
在运行时使用会导致哪些缺点(例如性能影响)。我不担心发布版本的构建时间。
Google Play Console 也建议我们启用它,因此我想知道为什么minifyEnabled
默认禁用它。
解决方案
通过在发布版本中添加 minifyEnabled true ,您可以混淆代码,但在发布版本中默认设置为 false ,因为如果设置为 true ,则需要编写 proguard 规则来告诉编译器在混淆代码时要忽略哪些类。如果 minifyEnabled 默认设置为 true 并且开发人员忘记添加 proguard 规则,则可能导致运行时崩溃。
但是,将 minifyEnabled 设置为 true 并将 shrinkResources 设置为 true 可以减小您的 apk 大小。
推荐阅读
- laravel - 使用 Vuejs 进行 Facebook 社交登录
- python - 如何在没有非常慢的 for 循环的情况下迭代 xpath 子集?
- jquery - 当用户单击引导 html 中的每个组件时,如何将数据从引导可折叠组件发送到模型?
- c++ - 获取占位符信息
- python - mysql没有连接到django
- mysql - 选择与另一个表中的字段相关的条目
- kubernetes - 无法确定是否需要开始作业:错过的开始时间过多 (> 100)。设置或减少 .spec.startingDeadlineSeconds 或检查时钟偏差
- json - 如何迭代 JSON 序列化对象并分配给模型
- docker - virtualbox机器上的docker-compose - ./wait-for-it.sh:没有这样的目录文件:未知
- azure - 没有可用于使用锁定令牌逻辑应用完成消息的会话