首页>技术知识>电商资讯 抖音 Android 端包大小优化成果显著,仍在持续进行中
25QI导航
2024-09-24
包体积中占比很大,针对资源进行优化是包大小优化中很重要的部分。dpi,针对上述两种场景,我们分别在打包时合并资源、复制资源,减少了包大小。平台,开发出了一套代码合入前置检查系统,每个分支增量超过阈值不准合入;还开发了分业务线监控包大小的工具,便于监控每个业务线包大小增长和给各个业务线定包大小指标。

在app/build/mcimage_result目录内,将创建mcimage_log.txt日志文件,该文件详录转换成效,并包含大像素与高分辨率图像的细节。McImageConfig负责调整阈值,以利对较大图像的逆向优化,实现文件体积的压缩。

图片压缩的奇妙旅程

在项目中精选450张图像,编制演示版本,并对不同算法处理后的图像文件大小进行比较,以评估其体积。在此之前,已通过手动使用Webp工具对全部抖音工程图像进行压缩,有效减少文件夹大小约1.6MB。此过程宛如踏上图像压缩的神奇之旅,每张图像均实现了最佳效果。

BitmapFactory,作为Android系统内置资源至位图转换的核心模块,其核心功能在类注释中明确。在项目实施过程中,为适应不同dpi的图片资源,我们采用整合与复制策略来精简应用包体积。此过程可类比为为每幅图像寻找最佳存储点,确保其在APK文件中稳定执行。

资源优化的魔法

实现图片压缩模块后,我们收集了依赖库和所有PNG图像,采用Graphics2D技术降低图像分辨率,并按类别存入指定文件夹。同时,经过Proguard处理的Google官方shrinkResources工具运行,标记并优化冗余资源,有效精简资源,如同施展魔法,显著减少构建过程中的资源占用。

在抖音Android版本中,激活shrinkResources强制选项可减少超过600个资源,带来约0.57MB的空间节省。资源ID及其完整路径映射保留于arsc文件中。应用程序通过资源ID调用Resource类,以检索所需资源。对资源路径名称进行混淆,能进一步减小应用包体积。这一过程相当于为资源赋予匿名的标识,以提升在APK文件中的隐蔽性。

资源混淆的秘密武器

抖音借助微信公开的AndResGuard技术实现资源混淆,对原始项目进行了包括MD5去重、保留单一DPI资源等改进。通用优化措施涵盖减少文件名及目录长度、应用7z压缩算法,同时支持海外产品进行多语言资源的实时更新。这一流程可视作一场资源混淆的竞技,每项资源都借此角逐中确立了独特身份。

经分析改进,我们实施三项策略:去除冗余命名、合并字符串池重复数据、精简多余文本。这些调整共缩减空间1.6MB。如图解,Facebook在处理arsc文件时,提取单独值的id,并将其独立分类至资源类型。每个id对应唯一值,避免资源空间浪费。此流程相当于为各资源分配独有标识,提升了apk资源的个性化程度。

优化之旅的终点

连续优化举措下,抖音Android版安装包体积显著下降。从图像压缩到资源混淆,每项方法犹如神奇的魔法,默默缩小了体积。这不仅是对技术极限的挑战,更是对资源管理技巧的深度挖掘。

在此过程中,我们不仅精通了资源的高效运用,还揭示了代码深层的秘密。每一次优化都打开了新世界的大门,每个发现均增强了我们对Android开发的深入理解。这一过程如同无穷尽的探险,每一次的微调都引领我们踏入新的认知境地。

未来的优化之路

尽管取得显著成效,优化工程持续不断。预计未来,抖音Android应用将朝向智能化与自动化优化方向。我们预期技术进步与优化策略将增多,以此持续降低包体大小,增强用户使用流畅度。

在旅程优化阶段,检视项目内潜伏的潜在优化资源,您有意加入探索代码深层次的优化之旅吗?

显示全部内容...