禁用 dexpreopt 构建单独的 Android 模块

2024-04-24

对于我的论文,我正在修改 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”。


显然,WITH_DEXPREOPT环境变量被内部WITH_DEXPREOPT变量覆盖

build/target/board/generic/BoardConfig.mk

将其更改为 false,或者根据 google groups 的人员的说法,开始使用以下命令:

make showcommands WITH_DEXPREOPT=false

就可以了。构建特定模块并制作新的系统映像现在会生成可启动的构建。

(来源:https://groups.google.com/d/topic/android-building/vJCkg8Yq9Ic/discussion https://groups.google.com/d/topic/android-building/vJCkg8Yq9Ic/discussion )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

禁用 dexpreopt 构建单独的 Android 模块 的相关文章

随机推荐