android6.0實現雙網卡上網

極其不建議用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

image.png

由于之前通不過代碼,執(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。
我的物理設備拓撲圖如下:


image.png

平板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通了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,221評論 25 708
  • 本文整理了在實踐過程中使用的Linux網絡工具,這些工具提供的功能非常強大,我們平時使用的只是冰山一角,比如lso...
    老夫劉某閱讀 3,823評論 0 7
  • 0×1.VLAN介紹VLAN(Virtual Local Area Network,虛擬局域網),通過在支持VLA...
    Zero___閱讀 6,799評論 3 9
  • 1 說實話我不太喜歡長大這個詞,因為長大這個詞包含了得到與失去的雙重含義??赡苁怯行┴澬陌桑覀兛傁胱プ∫磺锌梢宰?..
    輕逸先生閱讀 530評論 0 0
  • 有人說,幸福的狀態(tài)千篇一律,不幸的情況千奇百怪??赡苊總€人對于自己的生活狀態(tài)都是有著不同的見解??鞓返臅r光多于悲傷...
    午后江南閱讀 312評論 0 0

友情鏈接更多精彩內容