在android编译

时间:2016-04-17 18:20:59

标签: android android-source android-jack-and-jill

有人知道如何在编译AOSP(Master)时完全禁用插孔吗?

我一直遇到 jack 的问题,所以我总是通过在 BoardConfig.mk 中添加ANDROID_COMPILE_WITH_JACK := false来关闭它(编译CyanogenMod时) )。 我现在正在编译aosp,它似乎忽略了这个命令。

注意:我并没有真正尝试解决任何 jack 相关问题,我正试图将其关闭。

2 个答案:

答案 0 :(得分:6)

我建议使用AOSP标记来构建而不是使用master分支。例如,最新发布的Marshmallow是 android-6.0.1_r43 标记。

因此,让我们看看 clear_vars.mk ,它负责默认值: https://android.googlesource.com/platform/build/+/android-6.0.1_r43/core/clear_vars.mk#110

  

LOCAL_JACK_ENABLED:= $(DEFAULT_JACK_ENABLED)#'' (即禁用),禁用,完整,增量

因此,您必须覆盖Android.mk中每个模块的LOCAL_JACK_ENABLED 使用DEFAULT_JACK_ENABLED变量定义全局默认值。

P.S。最好在Google网上论坛上提出这样的问题:https://groups.google.com/forum/#!forum/android-building

答案 1 :(得分:5)

您可以在不更改任何代码的情况下禁用JACK。

make ANDROID_COMPILE_WITH_JACK:=false

只需在制作整个Android项目时执行此操作。

魔法在build/make/combo/javac.mk

ifndef ANDROID_COMPILE_WITH_JACK
# Defines if compilation with jack is enabled by default.
ANDROID_COMPILE_WITH_JACK := true
endif

build/make/core/config.mk

ifeq ($(ANDROID_COMPILE_WITH_JACK),true)
DEFAULT_JACK_ENABLED:=full
else
DEFAULT_JACK_ENABLED:=
endif

build/make/core/clear_vars.mk

LOCAL_JACK_ENABLED:=DEFAULT_JACK_ENABLED

它还说明了为什么您在本地模块中的修改是徒劳的。