为nexus 5x编译android n固件
作為安卓從業(yè)人員,我們經(jīng)常希望可以單步調(diào)試framework代碼,可以方便的調(diào)試第三方應(yīng)用。模擬器一般來說太慢,而且模擬器和官方sdk代碼一樣對應(yīng)不上。最好的辦法就是自己為nexus手機(jī)編譯userdebug固件,本文以nexus 5x為例記錄編譯實(shí)踐。
下載aosp源碼
國內(nèi)用戶建議使用清華鏡像,地址為https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ ,不贅述。
如果網(wǎng)絡(luò)不夠好,建議使用重試腳本,如
也可以參考http://blog.csdn.net/xia0pang/article/details/20281071 根據(jù)網(wǎng)速來判斷。
必要時(shí)可以使用repo sync –force-broken,可以在一個(gè)project下載失敗時(shí)繼續(xù)下載下一個(gè),而不是失敗退出。
切換分支
針對每款nexus手機(jī)的固件,aosp中都有對應(yīng)的tag,我們需要將源碼切換到對應(yīng)的branch或者tag才可以。
參照https://source.android.com/source/build-numbers ,nexus 5x對應(yīng)的最新細(xì)分版本為N4F26T,對應(yīng)的分支為android-7.1.1_r24 。也就是說我可以將aosp源碼切換到這個(gè)分支。
repo切換分支,參考http://blog.csdn.net/turui/article/details/7190676
摘抄如下
下載驅(qū)動(dòng)
aosp源碼中并不包含廠商的閉源驅(qū)動(dòng),需要手動(dòng)下載,地址為 https://developers.google.com/android/drivers
找到N4F26T對應(yīng)的驅(qū)動(dòng),分別為
https://dl.google.com/dl/android/aosp/lge-bullhead-nmf26f-7bf6caec.tgz
和
https://dl.google.com/dl/android/aosp/qcom-bullhead-nmf26f-fa1a80d5.tgz
目前國內(nèi)dl.google.com域名可以直接訪問,如果瀏覽器點(diǎn)擊下載鏈接遲遲沒有反應(yīng),可以復(fù)制鏈接然后使用wget下載。
下載解壓后均為.sh文件,放到aosp根目錄執(zhí)行腳本即可,中間會(huì)要求輸入I ACCEPT同意協(xié)議。
編譯環(huán)境
我使用的是ubuntu 16.04,參照官網(wǎng)中ubuntu 14.04的要求,比如使用open-jdk8,安裝必要依賴包等。
編譯
source build/envsetup.sh lunch // 選擇aosp-bullhead-userdebug make -j4注意我們自己編譯一般選擇userdebug固件,運(yùn)行速度快而且方便調(diào)試。
這里列出兩個(gè)編譯時(shí)遇到的問題
- Internal compiler error
錯(cuò)誤描述如下
我的解決辦法是直接make clean然后重試
- oom問題
出錯(cuò)如下
解決辦法參考http://blog.csdn.net/loongembedded/article/details/70243355 ,增加jvm堆內(nèi)存上限。
具體做法為修改prebuilts/sdk/tools/jack-admin文件
各自添加-Xmx4086M
之后的編譯過程很順利,附圖
刷機(jī)
先在系統(tǒng)settings中打開oem鎖開關(guān),執(zhí)行adb reboot bootloader進(jìn)入bl界面,然后執(zhí)行fastboot flashing unlock解鎖。此時(shí)就可以開始刷機(jī)。
在源碼編譯完成后的終端執(zhí)行
附刷機(jī)后圖片
總結(jié)
以上是生活随笔為你收集整理的为nexus 5x编译android n固件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 采用CAD刀具插件(飞狼刀模工具箱)的求
- 下一篇: CatiaV5R21安装