对安装包中的资源文件将进行如下方法进行优化:
1.图片压缩
1.对apk中的资源图片进行压缩. 可以使用webp图片。WEBP 是google推出的意图改变web图片JPG、PNG、GIF三分天下局势的一种图片格式。它不仅支持无损或有损压缩、alpha通道,还支持动画演示。在同画质的情况下,webp格式图片占用体积相较于jpg图片大约减少40%,相较于无损png图片大约减少30%。
2.使用svg图片。svg图片是对图片的描述,牺牲了CPU的计算能力,节省了空间。
WebP的使用方法
官方提供了jpg/png/gif到webp的互转的工具,以及使用方法。官方网址
下载转化工具
下载自己对于的系统的安装包。我以window为例。需要配置环境变量到path中去。安装完成后测试结果如下
工具主要包含四个。
分别用于png等转换为webp;webp转化为png;Git转化为webp;查看webp图片;最后一个是用于创建webp动画文件的。
5.对于资源文件中的图片,都是支持的。如果在代码中调用图片,如果是android4.0以上可以直接调用和其他图片使用是一样的。对于以下的网上有许多参考。现在手机基本上多少android4.0以上的了。
cwebp-q50-losslesspicture.png-opicture_lossless.webpcwebp-q70picture_with_alpha.png-opicture_with_alpha.webp
2.资源动态加载
动态的从服务器下载资源图片,把不必要的图片不放在apk资源包中。也可以使用一些插件化进行动态加载
3.Lint工具 设置优化点
检查没有使用到的布局进行删除
检查未使用到的资源进行删除
删除string.xml中没有使用到的字符
4.极限压缩
使用7zip工具压缩。下面会用到。
5.进行混淆
让apk变小。 原理:
可以删除注释和不用的代码
将java文件的名字修改短。a.java
方法名字也修改短。
6.对resources.arsc进行优化
资源打包过程
resources.arsc包中的文件是对资源文件的2进制的保存。其实我们也可以像优化dex包即混淆的方法把其中的包含 arrt,drawable,string,layout,color,menu,anim,styles等文件的名字和路径修改成a.png等名字。这样resources.arsc的大小就小了。
具体的使用我们可以使用微信开源工具AndResGuard做Android资源混淆。
微信开源工具AndResGuard做Android资源混淆
准备工具。 到微信github下载工具。在tool_output目录下。
2.包含的文件
3.配置文件config.xml
其中包含 7zip的压缩,设置白名单,即在混淆的时候不混淆。设置mapping路径。签名等。
4.下载7zip文件
配置7zip环境变量
7zip压缩比
5.开始编译
setjdkpath=D:\ProgramFiles\Java\jdk1.7.0_79\bin\java.exesetstorepath=release.keystoresetstorepass=testressetkeypass=testressetalias=testressetzipalign=D:\soft\dev\android\sdk\build-tools\23.0.2\zipalign.exe"%jdkpath%"-jarAndResGuard-cli-1.2.3.jarinput.apk-configconfig.xml-outoutapk-signature"%storepath%""%storepass%""%keypass%""%alias%"-zipalign"%zipalign%"pause
这是微信build_apk.bat.的配置。其中config.xml默认是打开的。如果按照上面的运行默认是使用7za的,如果在下载7zip没有现在extra就运行错误。不会生成。如果在命令后边 加上 -7zip 然后指定到 7z.exe也是可以运行的。
6.最终压缩结果
这样压缩就结束了。其实可以在android studio中配置。可以参考开源。