編譯7.0源碼遇到的問題和解決方案

編譯單獨(dú)模塊錯(cuò)誤

單獨(dú)編譯libcore模塊時(shí),會(huì)出現(xiàn)如下的錯(cuò)誤:

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的編譯系統(tǒng),Android 7.0是用Ninja再加上Jack來進(jìn)行編譯,速度上感覺不太明顯,但是占用資源較多,同樣的機(jī)器編譯Android 5.1時(shí),使用make -j32,其他程序基本不會(huì)受影響,但是在Android 7.0下,如果使用make -j32之后,整個(gè)電腦卡的跟**一樣...

ADB 錯(cuò)誤

編譯完成后,使用adb reboot bootloader時(shí)會(huì)報(bào)如下錯(cuò)誤:

error: insufficient permissions for device

報(bào)錯(cuò)的同時(shí),會(huì)在底下建議前往官網(wǎng)查看相應(yīng)文檔,查看文檔可知解決辦法是:
編輯/etc/udev/rules.d/51-android.rules文件,在其中添加當(dāng)前連接的設(shè)備,格式為:
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
其中, ATTR{idVendor}的值應(yīng)當(dāng)是當(dāng)前設(shè)備制造商相對(duì)應(yīng)的值,這里我的設(shè)備是Nexus 6,所以相對(duì)應(yīng)的值就是22b8, 最后執(zhí)行:

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

常見設(shè)備對(duì)應(yīng)USB Vendor ID

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

上面是一些常用廠商設(shè)備的USB Vendor ID, 完整的列表可以查看官網(wǎng)

根據(jù)官網(wǎng)指導(dǎo),設(shè)置好rules之后應(yīng)該就可以了,如果還是不可以,那么很簡(jiǎn)單,拔了重新插一下usb....

Build

  1. device/moto/shamu/aosp_shamu.mk中可以定義PRODUCT_MODULE, 該值會(huì)顯示在Settings中的關(guān)于手機(jī)的型號(hào)一欄
  2. build/core/version_defaults.mk中可以修改BUILD_NUMBER,該值會(huì)顯示在Settings中的版本號(hào)一欄
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容