第一 将项目中使用的图片转位webp格式,在AS中选择需要转的文件夹,右键选中convert to Webp就可以了
第二 由于第三方库中包含了大量的国际化资源,根据情况通过配置删除
可以参考这篇博客(https:
第三 只保留armeabi-v7a
(如果项目中包含第三方SDK或者自己使用了ndk,如果不进行配置会打包全cpu架构的动态库进入apk。
对于真机,只需要保留一个armeabi(armeabi-v7a)就可以了)
第四 lint检查删除一些无用的代码,资源文件
第五 开启混淆
开启混淆(使用proGuard)
ProGuard的三大作用
压缩
移除未被使用的类、属性、方法等,并且会在优化动作执行之后再次执行(因为优化后可能会再次暴露一些未被使用的类和成员。
优化
优化字节码,并删除未使用的结构。
混淆
将类名、属性名、方法名混淆为难以读懂的字母
第六 打包时使用shrinkResources = true,开启删除无用资源(与lint不同)
shrinkResources 用来开启压缩无用资源,也就是没有被引用的文件(经过实测是
drawable,layout,实际并不是彻底删除,而是保留文件名,但是没有内容,等等),但是因为需
要知道是否被引用所以需要配合mififyEnable使用,只有当两者都为true的时候才会起到真正的删
除无效代码和无引用资源的目的
与去除无用资源不同的是,比如 某个java类没有用到,被混淆时删除了,而该类引入了layout资
源 。此时会将这个资源也压缩掉
如何开启严格模式
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:shrinkMode="strict" />
如何手动保留xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/base_*"
tools:discard="@layout/unused2" />
第七
AndResGuard微信资源压缩方案。关于andResCuard的相关介绍请参考这篇文章(https://blog.csdn.net/CG_Wang/article/details/70183864)