编译单独模块错误
单独编译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 |
---|---|
18d1 | |
HTC | 0bb4 |
Huawei | 12d1 |
Lenovo | 17ef |
LG | 1004 |
Motorola | 22b8 |
Samsung | 04e8 |
Sony | 054c |
ZTE | 19d2 |
上面是一些常用厂商设备的USB Vendor ID, 完整的列表可以查看官网
根据官网指导,设置好rules之后应该就可以了,如果还是不可以,那么很简单,拔了重新插一下usb....
Build
- 在
device/moto/shamu/aosp_shamu.mk
中可以定义PRODUCT_MODULE
, 该值会显示在Settings中的关于手机的型号一栏 - 在
build/core/version_defaults.mk
中可以修改BUILD_NUMBER
,该值会显示在Settings
中的版本号一栏