Android10 dex2oat实践( 三 )


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逻辑 。也是本文的讲解重点 。
三、优缺点把这项技术应用到了一个插件化项目中 , 对插件APK进行dex2oat优化 , 总结下其优缺点 。
1.优点
  • 插件的加载速度大大增加(实测可以达到90%以上) , 对插件化框架的冷启动有很大的意义 。
  • 代码运行的速度有微小的提升 。测试了跳转Activity、Service这些场景 , 能够提升20-80ms左右 , 跟机型有很大的关系 。
2.缺点
  • dex2oat产物也会占用一定的存储空间 。所以如果插件更新记得及时删除老的oat文件 。
  • dex2oat 执行时间较长 , 首次还是建议直接加载插件 , 在后台执行dex2oat优化 。
  • 部分手机执行后没有成功生成oat文件 , 还是存在机型兼容问题 。

经验总结扩展阅读