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

这三块内容,然后编译即可.


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值