对于我的论文,我正在修改 android 框架并构建源代码(4.1.1 Jelly Bean)。
我可以进行完整的构建,但因为这非常耗时(我正在 ubuntu 12.04 64 位虚拟机上开发),所以我想构建单独的模块。
例如:
当对位置模块进行更改时,应该可以只构建更改的模块,并制作新的系统映像:
mmm frameworks/base
make snod
但这行不通。每次我尝试启动时,新的系统映像都无法启动,因为:
I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
经过一番研究,我尝试使用环境变量禁用 dexpreopt
export $WITH_DEXPREOPT=false
and
export $DISABLE_DEXPREOPT=true
并使用“make installclean”进行完全重建。完整的重建工作以及对框架的更改都存在于构建中。但进行新的更改后,“mmm Frameworks/base”和“make snod”仍然导致 dexpreopt 不匹配。
'make snod' 中的 build/core/makefile 还给出警告:“警告:启用 dexpreopt 后,您可能需要完全重建。”,该警告来自 makefile 中的这一行:
ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
这让我相信 $WITH_DEXPREOPT 变量未正确设置或读取?
到目前为止,如果不进行干净的完整重建,我还无法获得可启动的系统映像。我遵循的禁用 dexpreopt 的过程是否正确,或者在更改框架并获取新的系统映像后是否有其他方法可以构建单独的模块?
构建目标是“full-eng”。