android5.0 模块编译--art的模块编译小发现
Posted zero9988
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android5.0 模块编译--art的模块编译小发现相关的知识,希望对你有一定的参考价值。
讲道理,编译好安卓系统以后,进行模块修改,再重新mmm x模块 因该是一件特别快速的事情.
问题:
在编译android 5.0的art模块时发现存在两个问题:
1,无法进行单独的模块编译,且提示缺少各种各样的库.
2,能成功编译后,编译速度及其缓慢.
调查:
1,根据错误的信息可以发现都是形如 libgtest_host_intermediates 类似的文件夹中缺少库文件,和export_includes等文件.
2,编译慢,肯定是编译的东西多了,既然是编译上的问题,直接查看art目录下的android.mk文件,有众多test有关的语句,以及test相关的mk文件
include $(art_path)/build/Android.common_test.mk
include $(art_path)/build/Android.gtest.mk
include $(art_path)/test/Android.run-test.mk
对比,android5.x和android6.x版本的 art/Android.mk文件
可以发现
# test rules
# host test rules
# target test rules
等test相关的编译语句,
在仔细看android6.x中的Android.mk文件发现多了几行代码
# Don't bother with tests unless there is a test-art*, build-art*, or related target.
art_test_bother := false
ifneq (,$(filter %tests test-art% valgrind-test-art% build-art%,$(MAKECMDGOALS)))
art_test_bother := true
endif
ifeq ($(art_test_bother),true)
...............
...............
endif # art_test_bother
因此,我们可以发现,test部分的编译是可以取消,关闭的
猜测:
1,既然缺少文件,肯定是相关部分没有,那么可能是 第一次make时,没有去编译相关的和test有关的模块,这些模块最可能存在的就是external目录下了
2,编译慢,就是多编译了test有关的部分内容
解决:
1,根据提示查找external目录 libcore目录下的相关文件,然后先编译 这些test用到的相关模块,当相关模块都编译好后,就可以编译art模块了.
2,直接去掉
# test rules
# host test rules
# target test rules
这三块内容,然后编译即可.
以上是关于android5.0 模块编译--art的模块编译小发现的主要内容,如果未能解决你的问题,请参考以下文章