在Mac上為樹莓派3B編譯安卓7.1

Github.io

環(huán)境

1.Host:MacBook Air (13 英寸,2015 年初)
外置128G硬盤 區(qū)分大小寫
Xcode 7.3


image.png

2.樹莓派:樹莓派3B 16GB存儲卡 讀卡器


步驟

1.下載源碼

Refer to http://source.android.com/source/downloading.html

repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.2_r19
為了避免被墻歧匈,加快速度织阳,repo init的步驟可以參考(實測1速度更快):
1.https://lug.ustc.edu.cn/wiki/mirrors/help/aosp
2.https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

git clone https://github.com/android-rpi/local_manifests .repo/local_manifests
repo sync
漫長的等待诉瓦,源碼較大仿贬,60G以上,如果repo sync的時候 kernel_rpi external_mesa3d這兩項同
步不下來的話,先在.repo/local_manifests/default.xml中把這兩項注釋掉奕坟,然后執(zhí)行repo 
sync遍搞,最后在github上下載zip包罗侯,解壓至源碼對應(yīng)路徑。

源碼下載完成后溪猿,需要對源碼做一些簡單的修改可參見:
https://github.com/android-rpi/device_brcm_rpi3/wiki#use-hal_pixel_format_bgra_8888

2.安裝gcc-linaro-arm-linux-gnueabihf钩杰,下載地址:

http://download.csdn.net/download/u010955001/10148489

3.安裝gnu-sed

由于mac自帶的sed與gnu-sed有區(qū)別,編譯過程中需要使用到gnu-sed再愈,所以我們要安裝gnu-sed榜苫。
你可以選擇brew  或者port來安裝。
我選擇的是brew:brew install gnu-sed --with-default-names
安裝完成以后:
sudo rm /usr/local/bin/sed
sudo ln -s /usr/local/Cellar/gnu-sed/4.4/bin/sed /usr/local/bin/sed
這樣會將mac自帶的sed刪除翎冲,并使用gnu-sed垂睬,你也可以保留自帶的sed,只需將gnu-sed的路徑
export至系統(tǒng)環(huán)境變量前即可抗悍。

4.編寫編譯腳本驹饺,以下是我已經(jīng)寫好的腳本,將以下內(nèi)容保存到源碼根路徑下缴渊,命名為build_rpi.sh赏壹,然后chmod a+x build_rpi.sh 增加可執(zhí)行權(quán)限。

#!/bin/bash
if [[ $1 = all ]]; then
    cd kernel/rpi
    ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs
    cd ../..
    source build/envsetup.sh
    lunch rpi3-eng
    make ramdisk systemimage
fi

if [[ $1 = kernel ]]; then
    cd kernel/rpi
    ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/bcm2709_defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make zImage
    ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs
    cd ../..
fi

if [[ $1 = android ]]; then
    source build/envsetup.sh
    lunch rpi3-eng
    make ramdisk systemimage
fi

5.有了上一步的腳本后衔沼,在源碼根路徑下執(zhí)行腳本即可

./build_rpi.sh all     //編譯內(nèi)核和安卓代碼
./build_rpi.sh kernel   //編譯內(nèi)核
./build_rpi.sh android   //編譯安卓

6.燒寫系統(tǒng)

準(zhǔn)備一張8G以上SD蝌借,為SD卡創(chuàng)建分區(qū)(因為需要創(chuàng)建ext4文件系統(tǒng)最好使用Linux昔瞧,我使用Mac分區(qū)失
敗了,才安裝了Ubuntu的虛擬機(jī)為SD卡分區(qū)),分區(qū)結(jié)構(gòu)如下圖(注意system分區(qū)大小為1G):
image.png
p1 512MB for BOOT : Do fdisk : W95 FAT32(LBA) & Bootable, mkfs.vfat
p2 1024MB for /system : Do fdisk, new primary partition
p3 512MB for /cache  : Do fdisk, mkfs.ext4
p4 remainings for /data : Do fdisk, mkfs.ext4
Set volume label for each partition - system, cache, userdata
: use -L option of mkfs.ext4, e2label command, or -n option of mkfs.vfat

# Write system partition
$ cd out/target/product/rpi3
$ sudo dd if=system.img of=/dev/<p2> bs=1M

# Copy kernel & ramdisk to BOOT partition
device/brcm/rpi3/boot/* to p1:/
kernel/rpi/arch/arm/boot/zImage to p1:/
kernel/rpi/arch/arm/boot/dts/bcm2710-rpi-3-b.dtb to p1:/
kernel/rpi/arch/arm/boot/dts/overlays/vc4-kms-v3d.dtbo to p1:/overlays/vc4-kms-v3d.dtbo
out/target/product/rpi3/ramdisk.img to p1:/

7.SD卡插入樹莓派菩佑,使用USB-TTL連接樹莓派的串口和電腦的USB自晰。

8.樹莓派開始啟動,在minicom中即可進(jìn)入樹莓派終端稍坯,也能看到啟動消息

錯誤

1.scripts/mod/mk_elfconfig.c:4:10: fatal error: 'elf.h' file not found

解決辦法

到這個路徑 https://www.rockbox.org/tracker/9006?getfile=16683 找到elf.h的源碼酬荞,
放在 scripts/mod下,并修改報錯部分的include<elf.h>為 include "elf.h" 再次編譯瞧哟,如果
遇到這個類似的報錯混巧,也修改include<elf.h> 即可,注意路徑勤揩。

2.編譯內(nèi)核的時候提示needed by `net/netfilter/built-in.o'

解決辦法

因為同步kernel_rpi的時候失敗了咧党,所以是下載的zip包解壓,實際是解壓后復(fù)制過來的文件不完整陨亡,
所以凿傅,先刪除復(fù)制過來的kernel/rpi文件夾,直接將zip復(fù)制過來数苫,然后解壓,修改解壓后的文件夾名
稱為rpi

3.curl不兼容報錯

Unsupported curl, please use a curl not based on SecureTransport
Jack server installation not found
Unsupported curl, please use a curl not based on SecureTransport
Unsupported curl, please use a curl not based on SecureTransport

解決辦法:

brew install curl --with-openssl
編輯環(huán)境變量辨液,增加以下內(nèi)容:
export PATH=$(brew --prefix curl)/bin:$PATH

4.Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).

修改Jack的配置文件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"

先停止服務(wù)
./prebuilts/sdk/tools/jack-admin stop-server
重新開始服務(wù)
./prebuilts/sdk/tools/jack-admin start-server

5./bin/bash: xgettext: command not found

解決辦法:

brew install gettext
編輯環(huán)境變量虐急,增加以下內(nèi)容:
export PATH=$(brew --prefix gettext)/bin:$PATH

6.燒錄系統(tǒng)完成后,無法啟動看到以下消息:

[    3.621274] init: Starting service 'healthd'...
[    3.626646] init: Starting service 'adbd'...
[    3.628913] binder: 111:111 transaction failed 29189, size 0-0
[    3.637741] init: cannot find '/system/bin/sh' (No such file or directory), disabling 'console'
[    4.629075] binder: 111:111 transaction failed 29189, size 0-0

解決辦法:

檢查system.img燒錄是否正常滔迈,system分區(qū)大小是否正確止吁。我的是因為分區(qū)508M太小導(dǎo)致的,修改分區(qū)
大小為1G以后正常
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燎悍,一起剝皮案震驚了整個濱河市敬惦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谈山,老刑警劉巖俄删,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奏路,居然都是意外死亡畴椰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門鸽粉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斜脂,“玉大人,你說我怎么就攤上這事触机≈愦粒” “怎么了玷或?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長片任。 經(jīng)常有香客問我偏友,道長,這世上最難降的妖魔是什么蚂踊? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任约谈,我火速辦了婚禮,結(jié)果婚禮上犁钟,老公的妹妹穿的比我還像新娘棱诱。我一直安慰自己,他們只是感情好涝动,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布迈勋。 她就那樣靜靜地躺著,像睡著了一般醋粟。 火紅的嫁衣襯著肌膚如雪靡菇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天米愿,我揣著相機(jī)與錄音厦凤,去河邊找鬼。 笑死育苟,一個胖子當(dāng)著我的面吹牛较鼓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播违柏,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼博烂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漱竖?” 一聲冷哼從身側(cè)響起禽篱,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馍惹,沒想到半個月后躺率,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡讼积,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年肥照,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勤众。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡舆绎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出们颜,到底是詐尸還是另有隱情吕朵,我是刑警寧澤猎醇,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站努溃,受9級特大地震影響硫嘶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜梧税,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一沦疾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧第队,春花似錦哮塞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尸执,卻和暖如春家凯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背如失。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工绊诲, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人褪贵。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓驯镊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竭鞍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

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