2017-01-14 20 views
1

我正在使用Android开源项目。除了构建时间之外,它进展顺利。我只用AOSP上随之而来的模拟器,所以我一般做针对Android开源项目的增量构建

. build/environment.sh 
lunch aosp_arm-eng 
make -j4 

每次修改后重建AOSP。

问题是,这似乎是对整个AOSP进行全面重建,无论已经构建或已修改的内容。如果我只在ART中做出微小的改变,它会重建所有的东西,这需要几个小时。

现在我的问题是 - 如何避免这种情况?根据我的理解,应该自己弄清楚它需要重建什么,什么不重建。对?

也许我不应该每次都跑午餐?我还能做什么?

注:

  • 的Ubuntu 16.04,GCC 5.4.0(默认),64
  • 牛轧糖的最新7.x的标签(7.1.1)
  • 我改动了Android的运行时
  • ccache的配置&运行

回答

0

我假设你在art文件夹进行修改。只建art项目,你应该使用以下命令集(之后的第一个版本):

source build/envsetup.sh 
lunch aosp_arm-eng 
mmm art 

这个命令应该重新编译你的变化(见http://elinux.org/Android_Build_System的命令的详细信息)。但是,所有其他应用程序和框架都依赖于运行时环境,因此在您更改art后,AOSP可能需要重新编译所有依赖项。在这种情况下,您需要重新编译它们(我之前遇到过与Dalvik相同的问题,但我没有通过艺术验证这一点)。

0

我认为你需要启用ccache。为此运行以下命令

$ export USE_CCACHE=1 
$ export CCACHE_DIR=/home/itc/.ccache // this is the path of your ccache dir 
$ prebuilts/misc/linux-x86/ccache/cache -M 50G // this for allocate ccache size 

之后,您应该只运行一个干净的版本,只有第一次。 未来建设只考虑你改变了代码,并使用预生成

我你需要一个干净的构建必须运行

$ make clean 
$ make clobber 

如果您需要更改从核心库的任何文件 运行

$ make installclean 

然后像往常一样

$ . build/envsetup.sh && lunch aosp_arm-eng && make -j16