Android 关闭源码编译ODEX预优化功能

sancaiodm Bug异常与ODM定制 2021-09-28 2844 0

基于展讯平台R平台修改:


应该是android 7-8版本之后的系统源码编译默认编译都是odex版本,

但在日常的开发中经常会去修改framework内的一些功能,如果是开启odex功能,要验证自己开发的功能业务就得必须全刷,模块push单刷会造成手机无法正常启动,这会一定程度中浪费我们的时间,但如果关闭了系统内的odex功能就可以编译后直接单刷push 对应模块到手机内部目录内,重启即可验证,


如果需要非odex版本,就需要自己手动去关闭odex预编译功能:

如果是要关闭全源码的odex,则需要修改以下两处:

1>   aosp/build/make/core/board_config.mk

# Conditional to building on linux, as dex2oat currently does not work on darwin.

ifeq ($(HOST_OS),linux)

  WITH_DEXPREOPT := true  -> false;

endif


2>  aosp/build/make/core/dex_preopt_config.mk

  # Non eng linux builds must have preopt enabled so that system server doesn't run as interpreter

  # only. b/74209329

 #注释下面部分,否则编译错误,提示userdebug,user版本必须开启odex预编译功能

 #  ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT)))

 #   ifneq (true,$(WITH_DEXPREOPT))

 #     ifneq (true,$(WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY))

 #        $(call pretty-error, DEXPREOPT must be enabled for user and userdebug builds)

 #      endif

 #    endif

 #  endif



2如果单个APP不需要odex处理编译,要求只生成apk文件,可以直接在APP项目内的mk文件中添加此属性: LOCAL_DEX_PREOPT := false 

评论