天天看点

ART模式不支持odex到oat的转换

target/product/runtime_libart.mk

30

 31 # We currently don't suport DEX_PREOPT for art

 32DEX_PREOPT_DEFAULT := nostripping

 33

 34include $(SRC_TARGET_DIR)/product/runtime_common.mk

Art模式编译时,不支持把classes.dex成apk, jar中删除

43 # $(1): boot jar module name

 44define _dexpreopt-boot-jar

 45$(eval _dbj_jar := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1).jar)

 46$(eval _dbj_odex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1).odex)

 47$(eval _dbj_jar_no_dex := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$(1)_nodex.jar)

 48$(eval _dbj_src_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,$(1),,COMMON)/javalib.jar)

 49$(eval $(_dbj_odex): PRIVATE_DBJ_JAR := $(_dbj_jar))

 50$(_dbj_odex) : $(_dbj_src_jar) | $(ACP) $(DEXPREOPT) $(DEXOPT)

 51        @echo "Dexpreopt Boot Jar: [email protected]"

 52        $(hide) rm -f [email protected]

 53        $(hide) mkdir -p $$(dir [email protected])

 54        $(hide) $(ACP) -fp $$< $$(PRIVATE_DBJ_JAR)

 55        $$(call dexpreopt-one-file,$$(PRIVATE_DBJ_JAR),[email protected])

 56

 57$(_dbj_jar_no_dex) : $(_dbj_src_jar) | $(ACP) $(AAPT)

 58        $$(call copy-file-to-target)

 59 ifneq($(DEX_PREOPT_DEFAULT),nostripping)

 60         $$(calldexpreopt-remove-classes.dex,[email protected])

 61 endif

因此,可以断定支持ART模式的机器,肯定有对应的classes.dex文件存在。