極其不建議用MAC編譯aosp!??!
Mac磁盤和CPU限制較大,需要花費更多的精力。
我參考的是
http://blog.bihe0832.com/macOS-AOSP.html
http://www.07net01.com/2016/12/1754111.html
從零開始,一共編譯了4次,花了一周多的時間。大量的時間都花在了down源碼和編譯上了,所以強烈推薦用一個CPU強勁的電腦。
第一遍,我默認選擇了master分支,并且在lunch后選擇了2.aosp_arm64-eng。之后發(fā)現這個是用來跑模擬器的。
第二遍,還是master分支,編譯了16. aosp_arm64-eng,我手頭上的設備是pixel c平板。編譯完成后刷到平板里,一直卡在開機的google圖標上。查了下是沒裝驅動的緣故,然后…然后我就發(fā)現,我不知道該用哪個驅動了,試了好多都不行。所以開始第三遍了。
正文
編譯源碼部分
相關的環(huán)境啊、軟件啊見上文參考,我是mac ox 10.12系統(tǒng),設備是pixel c。
我之前下過清華的aosp-latest.tar。
解壓這個后得到aosp文件夾。進入后輸入命令:
repo init -u ttps://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r12
分支的選擇根據是https://source.android.com/source/build-numbers

由于之前通不過代碼,執(zhí)行repo init時候提示:
error:cannot run gpg:No such file or directory。
刪掉~/.repoconfig就好了。
重新執(zhí)行
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r12
然后輸入
repo sync -j4
清華最大允許4線程下載。
源代碼同步完成后,切換shell:
chsh -s /bin/bash
修改默認打開的文件數目:
ulimit -S -n 1024
然后去https://developers.google.com/android/drivers#dragon 下載對應的驅動,我對應的驅動是N2G47W。
下載完成解壓后得到2個shell腳本文件,將它們放到源代碼根目錄下,然后執(zhí)行,之后會得到一個vendor文件夾。
之后在源碼根目錄下設置環(huán)境
source build/envsetip.sh
選擇版本
lunch
我選擇了16。
此時提示
none of the installed SDKs ……
看了一下是由于xcode版本過新,所以重新裝了一個老版本的。然而還是不行,所以我就直接下了個macOSX10.11.sdk的包,放到了對應位置。繼續(xù)運行l(wèi)unch。OK了。
然后開始編譯
make -j8
我的渣渣本的CPU4線程,所以上面用的j8。
等待數個小時。期間碰到的錯誤:
1)錯誤:
Unsupported curl,please use a curl not based on SecureTransport
輸入
brew install curl --with-openssl
export PATH=$(brew --prefix curl)/bin:$PATH
2)錯誤:
android build Communication error with Jack server(52)
使用命令啟動jack
Jack-admin start-server
3)錯誤:
out of memory error....
打開prebuilts/sdk/tools/jack-admin,找到如下語句:
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
將上述語句修改為:
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
編譯完成后準備刷入平板,讓平板進入fastboot模式,先要oem解鎖,我之前解鎖過了,然后雙清,然后輸入
fastboot flashall -w
刷入平板。
然而卡開機logo??赡苁且驗榘姹咎掳?,大概。
因此我打算再編譯一次6.0版本。
數個小時下載源碼,然后lunch選擇編譯版本時候,提示jdk需要1.7.X的,沒辦法重裝jdk。
除此之外還提示需要macOSX10.6.sdk。從下載了一個macOSX10.11.sdk的包,然后在Xcode.app/Contents/Developer/Platform/MacOSX.platform/Info.plist中修改MinimumSDKVersion,改為了10.6。OK,開始編譯。
可是還是報錯,應該是高版本xcode不支持10.6。
修改回10.11,然后修改源代碼build/core/combo/mac_version.mk文件將mac_sdk_versions_supported :=10.6 10.7 10.8 10.9注釋掉, 加上mac_sdk_versions_supported :=10.11,然后裝回jdk 1.8.X。然后裝上對應的驅動,開始編譯。編譯完成后刷入平板。開機,perfect。
修改源碼部分
接下來嘗試修改源代碼,參考:
http://blog.csdn.net/andyhuabing/article/details/7790092
http://blog.csdn.net/kangear/article/details/14446527
我只是修改了frameworks\base\core\res\res\values-large\config.xml
<string-array translatable="false" name="networkAttributes">
<item>"wifi,1,1,1,-1,true"</item>
<item>"mobile,0,0,0,-1,true"</item>
<item>"mobile_mms,2,0,2,60000,true"</item>
<item>"mobile_supl,3,0,2,60000,true"</item>
<item>"mobile_hipri,5,0,3,60000,true"</item>
<item>"mobile_fota,10,0,2,60000,true"</item>
<item>"mobile_ims,11,0,2,60000,true"</item>
<item>"mobile_cbs,12,0,2,60000,true"</item>
<item>"wifi_p2p,13,1,0,-1,true"</item>
<item>"ethernet,9,9,1,-1,true"</item>
</string-array>
上面這一部分中加入了ethernet這一項,并且優(yōu)先級和wifi一樣。
然后輸入命令
make clobber
清除output和中間文件。
然后重新編譯:
make -j8
之后刷入平板。
修改平板路由表部分
刷入平板之后還需要root一下,以便修改路由表。
以下root方法未測試
eng版本系統(tǒng)adb可以申請root權限,然而直接再平板上裝的軟件不行。
ADB push su.img /data
ADB install Superuser.apk
這樣應該就root完成了。
Root之后我裝了一個better terminal。
我的物理設備拓撲圖如下:

平板wlan0的IP是192.168.1.29
wlan0中目標電腦IP是192.168.1.28
用虛線表示無線連接
平板eth0的IP是192.168.20.101
eth0中目標電腦IP是192.168.20.100
用虛線表示有線連接
以下為命令行
獲取root權限:
su
用ifconfig可以查看和配置平板的IP,我這里用的是DHCP自動獲取的IP。
以下配置路由表和路由規(guī)則,讓wlan0用路由表16,讓eth0用路由表15。
讓192.168.1.0/24網段的路由走 路由表16
ip rule add from 192.168.1.29 table 16
ip rule add to 192.168.1.28 table 16
配置路由表16
ip route add 192.168.1.0/24 dev wlan0 src 192.168.1.29 table 16
同理,讓192.168.20.0/24網段的路由走 路由表15
ip rule add from 192.168.20.100 table 15
ip rule add to 192.168. 20.100 table 15
配置路由表15
ip route add 192.168.20.0/24 dev eth0 src 192.168.20.101 table 15
配置完成,互相ping通了。