private fun reconcileSecondaryDexFiles() {val args = arrayOf("reconcile-secondary-dex-files", context.packageName)executeShellCommand(args)}
最后 , 本项目的代码组织情况如下:
- DexOpt:外部调用接口 , 执行DexOpt.dexOpt即可开启dex2oat 。
- ApkOptimizerN:负责Android7-Android9的dex2oat逻辑 。
- 【Android10 dex2oat实践】ApkOptimizerQ:负责Android10的dex2oat逻辑 。也是本文的讲解重点 。
1.优点
- 插件的加载速度大大增加(实测可以达到90%以上) , 对插件化框架的冷启动有很大的意义 。
- 代码运行的速度有微小的提升 。测试了跳转Activity、Service这些场景 , 能够提升20-80ms左右 , 跟机型有很大的关系 。
- dex2oat产物也会占用一定的存储空间 。所以如果插件更新记得及时删除老的oat文件 。
- dex2oat 执行时间较长 , 首次还是建议直接加载插件 , 在后台执行dex2oat优化 。
- 部分手机执行后没有成功生成oat文件 , 还是存在机型兼容问题 。
经验总结扩展阅读
- Azure DevOps Server 入门实践与安装部署
- 快读《ASP.NET Core技术内幕与项目实战》WebApi3.1:WebApi最佳实践
- 重新整理 .net core 实践篇 ———— linux上排查问题 [外篇]
- .NET API 接口数据传输加密最佳实践
- 重新整理 .net core 实践篇 ———— linux 上线篇 [外篇]
- 鹅长微服务发现与治理巨作PolarisMesh实践-上
- Arctic 基于 Hive 的流批一体实践
- 前端监控系列4 | SDK 体积与性能优化实践
- 2 HTML躬行记——WebRTC基础实践
- AI 【第1篇】人工智能语音测试原理和实践---宣传