android - android,为什么库模块带有 minifyEnabled false
问题描述
有一个使用一些库的应用程序。看到lib有
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
并且proguard-rules.pro
有一些规则来保留一些课程。
我相信是因为 R8 默认情况下是用于收缩/混淆的,并且minifyEnabled false
会禁用它。如果这是真的,这是否意味着 lib 的 aar 将在没有收缩/混淆的情况下构建?
如果应用程序默认打开 R8,应用程序是否会进行收缩/混淆,包括依赖的库?
解决方案
对于库项目,minifyEnabled false
意味着最终的 AAR 将不会被 R8 处理,即不会执行代码优化或死代码删除。
如果一个应用程序项目有minifyEnabled true
,R8 将处理应用程序代码、所有外部(Maven)库和本地库项目,它会使用应用程序中指定的规则来执行此操作。
作为一般规则,R8 仅在生成最终二进制文件(AAR 或 APK 或应用程序包)时运行,并且是否启用它在生成该工件的项目(库或应用程序项目)中指定。
推荐阅读
- ruby-on-rails - Rails 4.2.10 脏更改触发即使嵌套字段未更改
- android - 禁用 RecyclerView 按钮
- java - 使用 SmsManager 从内部类发送短信不起作用
- ios - 在 iOS 上使用激活事件时,Firebase A/B 测试不计算用户数
- database - 具有大数据集的 Firestore where 子句
- jsf - 如何从包含 Bean 中设置注入的 CDI bean 的 bean 属性?
- spring - 尽管存在弹簧安全依赖性,如何禁用弹簧安全登录页面?
- c# - 如何使用(Jquery)或(Jquery and Ajax)将数据插入到 mvc 核心中的详细信息表中
- git - Jenkins 多分支管道中带有 BitBucket Notifier 的“java.lang.Exception:None 或多个 repos”
- javascript - 将视觉上在一起的节点分组