编译7.0源码遇到的问题和解决方案

编译单独模块错误

单独编译libcore模块时,会出现如下的错误:

ninja: error: 'out/host/common/obj/JAVA_LIBRARIES/bouncycastle-hostdex_intermediates/classes.jack', needed by 'out/host/common/obj/JAVA_LIBRARIES/core-tests-hostdex_intermediates/classes.dex', missing and no known rule to make it

解决方法是,在libcore模块下的Android.mk中加入下面这句:

export LIBCORE_SKIP_TESTS = false:$LIBCORE_SKIP_TESTS

这句话的意思是跳过test模块编译,之后就可以正常编译libcore模块

不得不吐槽一下Android 7.0的编译系统,Android 7.0是用Ninja再加上Jack来进行编译,速度上感觉不太明显,但是占用资源较多,同样的机器编译Android 5.1时,使用make -j32,其他程序基本不会受影响,但是在Android 7.0下,如果使用make -j32之后,整个电脑卡的跟**一样...

ADB 错误

编译完成后,使用adb reboot bootloader时会报如下错误:

error: insufficient permissions for device

报错的同时,会在底下建议前往官网查看相应文档,查看文档可知解决办法是:
编辑/etc/udev/rules.d/51-android.rules文件,在其中添加当前连接的设备,格式为:
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
其中, ATTR{idVendor}的值应当是当前设备制造商相对应的值,这里我的设备是Nexus 6,所以相对应的值就是22b8, 最后执行:

chmod a+r /etc/udev/rules.d/51-android.rules

常见设备对应USB Vendor ID

公司 USB Vendor ID
Google 18d1
HTC 0bb4
Huawei 12d1
Lenovo 17ef
LG 1004
Motorola 22b8
Samsung 04e8
Sony 054c
ZTE 19d2

上面是一些常用厂商设备的USB Vendor ID, 完整的列表可以查看官网

根据官网指导,设置好rules之后应该就可以了,如果还是不可以,那么很简单,拔了重新插一下usb....

Build

  1. device/moto/shamu/aosp_shamu.mk中可以定义PRODUCT_MODULE, 该值会显示在Settings中的关于手机的型号一栏
  2. build/core/version_defaults.mk中可以修改BUILD_NUMBER,该值会显示在Settings中的版本号一栏

你可能感兴趣的:(编译7.0源码遇到的问题和解决方案)