3.2 可瘦身项分析
可瘦身项是指导和评判价值的主要承载者 , 本章对franky包含的全部9个可瘦身项 , 讲解基本技术原理、分析效果、用于瘦身时的注意事项等 。
第一项【代码】无用类 , 是指在运行时没有被使用到的类 。 当前无用代码的获取方法 , 是通过线上采样的方式 , 采集代码热度数据 , 并筛选出其中初始化次数为0的类(具体实现方案来自SlimLady:类级别不插桩线上代码覆盖度统计框架[2
, 此处只是使用了前者的结果数据) 。 对于无用代码较多的模块 , 存在线上使用率低(或者完全无使用)的问题 , 应该安排下线或者使用H5等动态化方式实现 。 分析报告中的示例结果如下:
第二项【代码】未混淆类 , 是指由于keep规则存在 , 导致没有被混淆的类 。 混淆可以极大降低代码在apk中占用的大小 , 因此除了一些特殊使用场景 , 绝大部分类都可以进行混淆 。 对于未混淆类较多的模块 , 可能存在混淆keep配置过于宽泛问题 。 分析报告中的示例结果如下:
第三项【资源】超大 , 是指在apk中真实占用超过一定阀值的资源(可配置 , 优酷一直使用的是10KB) 。 超大资源 , 可以采用远程化、重新设计更小的等效资源、如果是图片还可以采用压缩率更高的图片格式(jpeg、webp)或者矢量图等方式来降低大小 。 分析报告中的示例结果如下:
第四项【资源】无用 , 是指没有被直接引用的资源 。 从资源整体使用情况来看 , 一个资源可能在三个地方进行直接引用:java代码 , 通过R.resourceType.resourceName方式引用(例如R.string.app_name) , 或者通过资源id方式直接引用(例如0x7fxxxxxx);清单文件AndroidManifest.xml;其它资源 。 另外 , 资源还可以通过Resoruces.getIdentifier方式 , 通过传递资源名称和类型获取id值 , 运行时性能较差 , 因此官方并不推荐使用 , 需要注意的是 , 分析工具对这种方式会出现误检 。 对于无用资源 , 应该在确认未通过Resoruces.getIdentifier方式使用后 , 进行删除处理 。 分析报告中的示例结果如下:
第五项【资源】多维度 , 是指包含大于两个配置的资源 。 这种资源会在不同配置下 , 存在多份数据(文件) , 一些特殊纬度需要做额外考虑 , 例如:night、landport 。 对于多维度资源 , 一些非必要的配置可以清理掉 。 分析报告中的示例结果如下:
第六项【资源】无透明度png图片 , 是指png图片中包含了alpha通道 , 但是无相关数据 , 或者数据中的透明度值均为完全不透明 。 对于这种类型的图片 , 一般可以通过使用不带透明度信息的其它图片格式(例如jpeg) , 来降低大小 。 分析结果中 , 已经排除了.9类型图片 , 在分析报告中的示例结果如下:
第七项【资源】相似 , 是指资源值的相似程度较高 。 当前分析只包含file-base类型资源(相对的 , 值仅存在于resources.arsc中的资源 , 称为value-base类型资源) 。 对于非图片文件资源 , 仅筛选出完全一样的资源(md5一致 , 相似度为1) 。 对于图片文件资源 , 额外计算了相似度 , 采用DHash算法计算图片指纹 , 然后计算hamming距离作为相似值 。 对于相似度为1的资源 , 内容完全一致 , 因此可以仅保留一份 , 对于相似度小于1的资源 , 由于有些图形简单的图片资源特征信息不明显 , 因此即使相似度较高 , 是否可互相替代的最终决策 , 仍然需要根据所在业务场景进行人工判断 。 分析报告中的示例结果如下:
第八项【so】不规范使用STL , 是指动态链接库so对c++ STL库的不规范使用 , 包括两种情况:动态链接非统一STL , 官方建议统一使用的STL为libc++_shared.so , 其它非统一STL包括libgnustl_shared.so、libstlport_shared.so;静态链接stl , 通过改造为动态链接 , 可以实现较好的瘦身收益 。 分析报告中的示例结果如下:
- iPhone|Plus时隔5年回归!曝苹果全新6.7寸手机名为iPhone 14 Plus
- ZOL科技早餐:华为千元手表官宣,腾讯QQ回应大规模盗号
- ios16|一步到位能用5年,目前这3款手机能闭眼入,买手机不要太小气
- 社交|腾讯视频为IP编写「价值算法」
- 最前线 | 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 潘博文|腾讯QQ回应用户号码被盗:目前受影响范围已得到控制
- 腾讯|推荐6款免费软件,上班族最好放在电脑里
- 腾讯|Reno8系列发布新色花仙紫:工艺全新升级,暑假换机还有限时礼盒
- 腾讯|1080P是什么意思网路用语,为什么是骂人的
