Apk瘦身方案

背景:随着业务迭代,Apk体积逐渐变大。项目中积累无用资源,未压缩的图片等都会增加apk的size,而Apk的size会影响app运行时的加载速度,使用内存,耗电量等等。
基础:Apk的结构如下简介:

//===============================
优化方案:
No1:Android Size Analyzer
Android Size Analyzer 工具可轻松地发现和实施多种缩减应用大小的策略。
选择 Analyze > Analyze App Size,对当前项目运行应用大小分析。分析了项目后,系统会显示一个工具窗口,其中包含有关如何缩减应用大小的建议
No2: 移除未使用资源
No3:启用资源缩减 (不打包)


aaaa.png

NO4:使用Lint分析器(物理删除)不建议的操作
lint 工具是 Android Studio 中附带的静态代码分析器,可检测到 res/ 文件夹中未被代码引用的资源。
lint 工具不会扫描 assets/ 文件夹、通过反射引用的资源或已链接至应用的库文件。此外,它也不会移
除资源,只会提醒您它们的存在。 与资源缩减不同,这里点击删除,那就是把文件删了。
反射引用资源:getResources().getIdentifier("layout_main","layout",getPackageName());
No5:指定备用资源: 这样就可以在不删除的情况下,针对某个国家的语言打包。

No5&No6.png
No6: NDK相关
1.-->自己变异的so配置可以如上代码所示,
2.-->针对其他平台如:baidu地图,bugly等提供了全平台支持,我们可以使用productFlavor都项目配置,只关注项目运行设备的架构,比如:
对于arm64架构的设备,如果使用armeabi-v7a也能够兼容,但是不如使用arm64的so性能。因此现在部分应用市场会根据设备提供不同架构的Apk安装。此时我们需要打包出针对arm64的apk与armv7a的apk,可以使用productFlavor
productFlavor.png
No7: 图片处理:大图webp,小的icon使用矢量图svg,系统渲染每个 VectorDrawable 对象需要花费大量时间,而较大的图片则需要更长的时间才能显示在屏幕上。因此,建议仅在显示小图片时使用这些矢量图
其他的优化建议:
1,使用精简的依赖,如protobuf-lite版本;对于分模块的库按需引入
2,主动移除无用代码(开启R8、Progurad自动移除)
3,开启资源混淆:https://github.com/shwenzhang/AndResGuard
4,支付宝删除Dex debugItem https://juejin.im/post/6844903712201277448
5,发布Google paly的应用选择使用AAB https://developer.android.google.cn/guide/app-bundle

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 代码混淆 proguard混淆压缩,Shrink,去除代码无用的类,字段,方法。优化,Optimize,优化字节码...
    gczxbb阅读 830评论 0 1
  • 步骤简介 图标使用SVG矢量图; 针对需要同一张图片不同颜色的情况下,使用Tint着色器; 将项目中资源转为web...
    禅座阅读 243评论 0 0
  • 了解Apk结构 APK 文件就是一个Zip格式的文件,其中包含构成应用的所有文件。这些文件包括 Java 类文件、...
    zcwfeng阅读 329评论 0 2
  • 了解 APK 结构 在讨论如何缩减应用的大小之前,有必要了解下应用apk的结构,apk文件由一个zip压缩文件组成...
    闫回阅读 294评论 0 1
  • APK瘦身的价值   APK瘦身严格上来讲不算是对应用性能的优化,应该算是对应用程序体验的优化,瘦身的价值主要有一...
    Mr_Rains阅读 690评论 0 51