android apk 瘦身

App瘦身

代码瘦身

  1. 移除无用代码、功能,缩减方法数;
  2. 移除无用的库、避免功能雷同的库;
  3. 启用Proguard,让方法字符串长度变小;

资源瘦身

  1. 移除无用的资源文件;移除无用资源文件要比移除无用代码容易,在Android Studio的任何文件中右击,选择清除无用资源即可删除没有用到的资源文件。
    备注:另外在build.gradle中设置shrinkResources为true后,每次打包的时候就会自动排除无用的资源。shrinkResources需要配合minifyEnabled一起使用。但是根据我的实验:无用的资源还是会被打进Apk中,只是变成一张黑图,体积也非常小,只有不到100b(待验证)。
  2. Drawable目录尽量只保留一份资源;对UI不是最顶级要求的话根据自己的用户群体机型放在一个合适的目录下。
  3. 对图片进行压缩;可以考虑使用TinyPng、pngquant、ImageOptim等工具对图片进行压缩,这些工具可以减少PNG文件大小,同时保持图像质量
    有一个AndroidStudio插件:TinyPngPlugin,能够批量地压缩项目中的图片,更加方便。
  4. PNG转换JPG;PNG是无损压缩,JPG是有损压缩,根据UI情况可选。
  5. 使用矢量图;SVG,svg比较耗cpu,小图标等常见。
  6. 使用WebP;Android 4.2.1+才支持显示含透明度的WebP。
  7. 资源混淆;资源混淆,于是路径变短,resources.arsc中文件变小,如res/drawable-xhdpi/icon.png被修改为R/s/f.png。
    可参考微信的资源混淆方案:AndResGuard
  8. 资源在线化;不经常使用又非常大的资源放网上,按需下载。

So瘦身

在允许的情况下,针对用户机型分布保留特定架构的So;

其它

采用google的bundle机制,根据手机本身的特点按需下载对应的资源及so等,类似插件化,将Dex与资源文件放在服务端,需要时下载;但需考虑插件化实施以及与现有项目结合难度;通过在 build.gradle配置include来针对每个CPU架构生成单独的安装包,按照架构上传Apk;但是这个方案在国内应用市场几乎没有采用的,只能在Google Play上使用。

对Apk进行瘦身,瘦身So以及资源文件见效最快,而针对Dex的优化可能作用不会很明显。

你可能感兴趣的:(android apk 瘦身)