android源码编译空间,编译Android源码的坑

完整的过程见这里http://source.android.com/source/index.html 我只是记录一下中间可能遇到的坑。我用的环境是ubuntu 16.04,源码用的Android 6.0.1, 设备是Nexus 5X。

JDK安装

好像编译Android6.0需要的是JDK7而不是JDK8,官网上的说明好像有误。 这样安装7:

sudo add-apt-repository ppa:openjdk-r/ppa

sudo apt-get update

sudo apt-get install openjdk-7-jdk

可以这样切换JDK版本

sudo update-alternatives --config java

sudo update-alternatives --config javac

依赖测试设备的问题

内存不足

internal compiler error: Killed (program cc1plus) recipe for target ...glsBuiltinPrecisionTests.o failed 这是因为内存不足。 其实人家说了编译需要15G内存,200G硬盘。但是穷啊,只有2G内存。 这样解决:

sudo dd if=/dev/zero of=/swapfile bs=64M count=16

sudo mkswap /swapfile

sudo swapon /swapfile

Ubuntu16

clang: error: linker command failed with exit code 1 这是clang编译器报错,这个坑只有用最新版Ubuntu16的时候有。解决方法: 修改art/build/Android.common_build.mk:

ifneq ($(WITHOUT_HOST_CLANG),true)

改为:

ifeq ($(WITHOUT_HOST_CLANG),false)

设备连接不上

运行adb device如果没有列出设备,说明usb rules有问题。 在这里更新usb rules:http://source.android.com/source/initializing.html#configuring-usb-access 如果还是有问题例如no permissions,运行lsusb命令,查找设备对应的两个id,并且在/etc/udev/rules.d/51-android.rules(文件名字可能不同)里面增加规则:

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c87",MODE="0666"

重新加载

$sudo chmod a+rx /etc/udev/rules.d/70-android.rules

$sudo service udev restart

重新连接设备.

刷机waiting device

运行adb reboot bootloader,如果不能进入fastboot模式,则说明设备连接有问题。

官网上说运行fastboot flashall -w来刷机,但实际上会出现错误。 解决方法是用sudo运行,并且增加-p 参数(其实就是构建的时候输入的代号)。如下:

sudo $(which fastboot) oem unlock

sudo $(which fastboot) flashall -w -p bullhead

其他错误

bad request, see jack server log

这个错误不要紧,再重新编译就行了。

Start jack server fail

这个错误也不要紧,重新编译就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值