当前位置: 首页 > 网络应用技术

Android包装量优化(常规,高级,极端)

时间:2023-03-08 16:32:51 网络应用技术

  不需要说包装大小的重要性。包装的大小直接影响用户的下载,保留,甚至某些制造商的预定强制要求必须小于一定价值。但是,随着业务的迭代开发,应用程序将变得越来越大,并且会变得越来越大,并且安装程序包将继续膨胀。因此,包装大小的减小是一个长期的连续治理过程。

  除了AS,还有Apkchecker和Classyshark之类的工具。

  LIBSO文件,不同的CPU架构资源文件,可绘制的,布局和其他资产应用程序资源,字体,音频文件和其他类(n).DEXDX编译Java文件meta-Inf签名信息与Resourcesc binaryresource文件有关列表文件

  这是包装过程的官方新版本。尽管省略了一些步骤,但一般过程相对清楚。

  再次简化:

  APK本质上是一个压缩文件,它是包装的产物。它可以用作入口点的阶段,在包装之前和包装中。

  关键字:减少,压缩。

  分析>按名称进行检查>未使用的资源

  检测结果:

  确定无用的删除。

  注意:由于皮棉在本地是本地,因此将无法识别引用的资源文件,并且它们也将出现在检测列表中。

  分析>检查代码

  检测结果:

  因为该项目是用Kotlin编写的,所以请查看直接在Kotlin目录中的检测结果。

  注意:由于皮棉在本地是本地,因此将无法识别反射和动态引用类别,也将出现在检测列表中。

  建议使用TINYPNG在线压缩。

  毕竟,手动压缩不是有效的,您可以使用Tinypngplugin一键压缩。

  插件搜索安装。(安装插件后,新版本无需重新启动)

  压缩结果:

  9张图片,您可以看到效果仍然非常可观。如果有很多图片,效果更为明显。

  上述操作后,包装的体积减小,仅为4.7MB APK。

  可以继续优化这9张图片吗?是的,WebP格式的大小较小,并且还提供了一个单击的转换支持。

  以ic_avata.png为例:|ic_avata.png |优化后|| - | - ||原始尺寸|113.09kb ||tingpng压缩|36.85kb ||WebP |8.66kb |

  可以看出,转向WebP后,它更接近原始大小,太可怕了?

  Minifynabled True,启用了默认代码减少功能。

  谨慎使用R8,因为:因为:

  R8将忽略所有试图修改默认优化行为的前卫规则,例如-optimization和-optimizationpass。

  您可以不使用R8打开混乱。

  混乱参考:从进入到掌握的Android混乱

  收缩是正确的

  如果有一些不确定的资源文件,它们不使用或不敢删除,或者是否会更改需求,请首先保留。我应该怎么办?您可以使用收缩来减少资源。

  有必要使用混淆使您混淆。原理很简单。删除代码后,引用的资源将成为无用的资源,然后才能进一步减少。

  例如,集成的实时广播或浏览器可能会提供许多SO文件。首先,它可能是进入项目的脑部副本,但不一定是使用。

  例如,各种CPU体系结构:

  目前,市场上的手机CPU都是所有建筑,因此保留了手臂(自定义除外),或两者都直接删除。

  如果开发需要模拟器调试,请添加体系结构,正式记住去除或用中间变量控制它。

  如果以前没有对此作品进行优化,并且有很多SO文件,则可以将其降低30%以上,这太可怕了!

  去海上的许多应用将被国际化,但不能适应这么多语言。除了您自己的应用程序,还有一些官方和三个方可以统一配置支持语言。

  资源文件相同

  上述操作的摘要,以查看当前结果的方式。

  ,袋子的数量减少了,太可怕了!

  如果这是一个大项目,那么好处是可观的。

  作者:Yechaoa

  以上只是一些常规操作,让我们看看下面的一些高级操作。

  资源混乱是要缩短原始的冗长资源路径,例如将Res/Drawable/Wechat更改为R/D/A.Open源工具AndResguard。

  引入后未使用它,或在删除功能后未将其删除。

  例如,滑行和毕加索都是图片库,可以保留。

  DEX文件是包装的产品,Redex是Facebook开源分包优化解决方案。您可以参考:Redex。

  因此,文件以前已经减少了,但是SO文件的比例仍然相对较大。您可以考虑第一次启动的SO文件是动态的,也就是说,插头的想法,按需加载,但同时,风险也很高。有很多情况需要考虑,例如下载正时,网络环境,线程流程,是否有降级策略用于加载故障等等。

  您可以参考Facebook开源独奏器。

  按需加载,风险越大,风险越大,风险与上述相同。

  然后,如果我想做极端,那么其他节目操作,还可以,继续。

  某些功能可能太重了,无法做到本地人。例如,各种促销活动需要加载各种大图。本地人既沉重又不动。目前,H5是一个不错的选择。但是,如果您不支持H5或小程序,那么使用此功能的访问可能会增加包装的数量并对其进行很好的比较。

  有些功能可能很漂亮,但是发射后的收入并不高。无论您是否需要重新思考价值点,最好找到要依靠的数据,然后与产品进行战斗。

  例如,引入一个非常出色的功能性的三方库utils,但实际上只使用了少数。泵送源代码还可以减少软件包的数量,同时,它可以减少网络下载的汇编时间。

  缺点是升级成本很大。

  也就是说,将图片上传到服务器,并通过动态下载方法减少软件包的音量。缺点是,当加载是第一个负载时,它取决于网络环境,需要平衡加载速度和流量。可以预先加载图片,但交通消耗是不可避免的。如果您关心交通指标,则需要称重。

  debugitem主要包含两个信息:

  删除调试信息和行号信息,如果不是最终的信息,则不建议您参考该Aripay中此支动一天应用程序的优化分析:Android数据包的大小极为压缩。

  内部联合R场可以解决导致Multidex 65536问题的过度R场的问题,并且此步骤可能对SLIMMing产生重大影响。

  meituan代码片段:

  同时,您可以参考开源收缩-R-Plugin以及Didi开源助推器。

  对于同一图中不同颜色的处理,可以使用它。例如,它最初是黑色的标志。现在另一页必须是白色的。没有两张照片。相反,您可以使用色调修改白色。

  减小一个可以降低约1.0至1.4 kb的大小。

  袋子体积监视应用作发布过程的链接。最好是平台面向和处理。否则,很难继续进行,数据包的音量再次增加。

  一般思想:当前版本比较了先前版本的大小,并且需要批准超过200KB。需要给予批准 - 遵循 - UP优化方案等。