支付宝官方插件 wordpress,seo2短视频发布,中山网站建设公司排名,wordpress主题配置推荐阅读#xff1a; 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 滴滴Booster移动App质量优化框架-学习之旅 二对重复资源优化和无用资源优化进行了讨论。这里对不可编译无用assets资源优化进行讨论。 先看微信Matrix-ApkC… 推荐阅读 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 滴滴Booster移动App质量优化框架-学习之旅 二对重复资源优化和无用资源优化进行了讨论。这里对不可编译无用assets资源优化进行讨论。 先看微信Matrix-ApkChecker是怎样检索对无用assets资源。ApkCheckers是针对 android 安装包的分析检测工具反汇编apk包中dex文件在内存生产smali相关数据检索 const-string 指令 line根据const-string指令 后面字符串常量值 与 assets资源名是否相等找出usedAssetsResouces比如 //如果 能在assets文件夹booster_demo_1.png
//则booster_demo_1.png为usedAssetsResources
const-string v0, booster_demo_1.png 反汇编dex使用了如下两个jar包 implementation org.smali:smali:2.2.7
implementation org.smali:baksmali:2.2.7 不过这种方式只能粗略的检索出来比如使用三方图片加载库是鉴别不了的比如使用Glide加载assets中图片 val url file:///android_asset/booster_demo_1.png Glide.with(context).load(url).into(holder.image) 在构建过程中进行无用assets资源优化需要考虑两点 1.Hook点 即在哪个Task之后或者之前进行优化 2.inputFiles(dex、assets) 来源 无用assets资源优化肯定在apk生成之前进行Hook点就选择在packageDebug/packageRelease task之前 variant.packageAndroidTask.doFirst{... //unusedAssetsResources优化variant.removeUnusedAssetsResources(it.logger,results)variant.generateReport(results)} 使用TaskTreePlugin插件查看packageDebug / packageRelease的task tree,cmdz终端执行如下命令 gradlew :app:packageDebug :app:taskTree --task-depth 1 log-debug.txt 可以看到packageDebug/packageRelease tasktree如下图 打印mergedAssetsTask和dex相关task的outputFiles,如下图 如果之前成功地打过包查看这个两个task的outputFiles下的文件如下 现在无用assets资源优化的inputFiles dex和assets都找到了。 无用assets资源优化实现 步骤如下 1.找出assets资源 2.反汇编dex找出usedAssetsResources 3根据配置解析出无用assets白名单 4.根据前三步得到unusedAssetsResources 5.删除unusedAssetsResources文件 详见doRemoveUnusedAssetsResources方法 验证分别在App module assets放入显示如下图片资源 集成无用assets资源优化功能打release包插件输出报告如下 查看release.apk包中assets文件如下 运行app可以成功加载显示assets图片资源。 本篇文章比较简短只讨论了无用assets资源优化大佬们也许觉得写得有些啰嗦估计一句也可以表述清楚但我这里重在表述实现的思路过程。没有经过大量测试仅供参考学习共同成长。 源码传送门BoosterStudy 参考资料 官方公众号-Apk 分析减包利器 如果您对博主的更新内容持续感兴趣请关注公众号 转载于:https://www.cnblogs.com/sihaixuan/p/11075041.html