在构建Lollipop时,我可以通过运行来编译我的更改:
make clean-framework clean-services clean-services.core services.core services framework && make snod
然而,这对Marshmallow来说并不可靠。有时它可以工作,有时我的更改不会被编译。我也看到这产生了一个无法启动的构建,迫使我做了一个完整的make -j8
,这需要我的机器上将近一个小时。
我错过了新的构建目标吗?非常感谢任何建议。
感谢。
答案 0 :(得分:0)
部分构建无法启动的原因是dex pre-optimization
。启用dexpreopt时,您无法重新编译系统映像的某些部分,因为它们是字节对齐的,并在编译时一起优化。在禁用dexpreopt并执行make clobber && make -j6
之后,我能够进行部分构建而没有任何问题。
要禁用dexpreopt,请在终端中设置以下变量:
export WITH_DEXPREOPT=false
export DISABLE_DEXPREOPT=true
提示:将以上内容添加到build/envsetup.sh
或.bashrc
,这样您就不必每次都记住。
提示2:还有DONT_DEXPREOPT_PREBUILTS
,但我从未遇到过问题,所以我将其设置为默认值false
。如果将此变量设置为true
,则设备在闪存后需要花费相当长的时间(很容易超过一小时),因为它必须首先优化所有内容。