resConfigs介绍
- 官网 https://developer.android.com/studio/build/shrink-code
在官网中有介绍,如下所示:
Gradle 资源压缩器只会移除未被您的应用代码引用的资源,这意味着它不会移除用于不同设备配置的备用资源。必要时,您可以使用 Android Gradle 插件的 resConfigs 属性来移除您的应用不需要的备用资源文件。
例如,如果您使用的库包含语言资源(例如使用的是 AppCompat 或 Google Play 服务),则 APK 将包括这些库中消息的所有已翻译语言字符串,无论应用的其余部分是否翻译为同一语言。如果您想只保留应用正式支持的语言,则可以利用 resConfig 属性指定这些语言。系统会移除未指定语言的所有资源。
下面这段代码展示了如何将语言资源限定为仅支持英语和法语:
android {
defaultConfig {
...
resConfigs "en", "fr"
}
}
同理,您也可以利用 APK 拆分为不同设备构建不同的 APK,自定义在 APK 中包括的屏幕密度或 ABI 资源。
二、实战
2.1 Resource.arsc 介绍
- 资源打包过程简述
打包工具负责编译和打包资源,编译完成之后,会生成一个resources.arsc文件和一个R.java,前者保存的是一个资源索引表,后者定义了各个资源ID常量,供在代码中索引资源。
- Resources.arsc文件格式
resources.arsc文件的作用就是通过一样的ID,根据不同的配置索引到最佳的资源显示在UI中。
从整体上来看,其结构为:资源索引表头部+字符串资源池+N个Package数据块。文件格式:
具体的关于Resource.arsc的内容,请看下面的几篇文章了解详情
- https://www.jianshu.com/p/3cc131db2002
- https://www.jianshu.com/p/de7c4f239ab6
- https://blog.csdn.net/jiangwei0910410003/article/details/50628894
2.1 先不添加resConfigs ,查看编译出来的apk体积以及resources.arsc大小
未配置resConfigs的编译出来的apk分析如下所示:
- apk体积为 52.1MB
- resources.arsc体积为 4.2MB
- string的配置语言有97个
2.2 添加resConfigs ,查看编译出来的apk体积以及resources.arsc大小
添加 resConfigs 配置,如下所示,我们apk只需要支持默认英文、还有中文的简体和繁体即可。
//指定语言只使用中文、英文、繁体,注意英文是默认语言,可以不写
resConfigs "zh-rCN", "zh-rHK", "zh-rMO", "zh-rTW"
配置resConfigs的编译出来的apk分析如下所示:
- apk体积为 49.8MB
- resources.arsc体积为1.8MB
- string的配置语言有5个
有此可见,只配置你项目需要的语言,去掉不需要的语言,可以大大减少apk的体积。
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/97646945
☞ 本人QQ: 3024665621
☞ QQ交流群: 123133153
☞ github.com/ouyangpeng
☞ [email protected]