提示!应用程序的安装有两种情况,第一:首次启动系统时安装。第二:系统启动完毕后安装。

本篇博文基于第一种安装场景。在系统首次启动的场景中,系统会对/system/app、/system/priv-app、/data/app文件夹下的全部APK进行dex字节码到本地机器码的翻译,相同也会对/system/framework文件夹下的APK或者JAR文件,以及这些APK所引用的外部JAR。进行dex字节码到本地机器码的翻译。这样能够保证除了应用之外。系统中使用Java来开发的系统服务,也会统一地从dex字节码翻译成本地机器码。具体内容请移步老罗的博客Android
ART执行时无缝替换Dalvik虚拟机的过程分析


一、JVM、DVM、ART虚拟机了解

二、Odex


三、预编译提取Odex
    只是这里须要注意的是打开WITH_DEXPREOPT 宏之后,预编译时提取Odex会添加一定的空间。预置太多apk。会导致system.img 过大。而编译只是。遇到这样的情况能够通过删除apk中的dex文件、调大system.img的限制大小,或在预编译时跳过一些apk的odex提取。
    比如跳过helloworld应用提取的方法例如以下:
05-28 13:21