AOSP编译APK的时候,默认情况下,对于prebuilt的APK,没有preopt。preopt的过程是把APK里面的.class分离出来,成为一个单独的.odex,加快Dalvik下APK的安装以及代码的执行速度。
下面对于core/prebuilt.mk的补丁可以实现对prebuilt的APK执行preopt的功能。
--- a/core/prebuilt.mk
+++ b/core/prebuilt.mk
@@ -16,6 +16,16 @@
$(error dont use LOCAL_PREBUILT_JAVA_LIBRARIES anymore LOCAL_PATH=$(LOCAL_PATH))
endif
+ifneq ($(filter APPS,$(LOCAL_MODULE_CLASS)),)
+ifeq (true,$(WITH_DEXPREOPT))
+ifeq (,$(TARGET_BUILD_APPS))
+ifndef LOCAL_DEX_PREOPT
+LOCAL_DEX_PREOPT := true
+endif
+endif
+endif
+endif
+
include $(BUILD_SYSTEM)/base_rules.mk
# Deal with the OSX library timestamp issue when installing
@@ -30,8 +40,20 @@
# Ensure that prebuilt .apks have been aligned.
ifneq ($(filter APPS,$(LOCAL_MODULE_CLA