首頁 > 軟體

基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼

2020-06-16 18:10:09

環境準備:
基本環境:Ubuntu-14.04-desktop-64bit LTS(裸機或者Windows下虛擬機器安裝均可,12.04也可以,但10.04目前不支援了)
其他要求:空閒磁碟空間100G以上,程式碼部分接近10G,其他為git和編譯中間和目標檔案準備

==========================================
第一部分:環境初始化
==========================================
1. 安裝Oracle JDK
注意:如果編譯Android4.4不能用OpenJDK,必須用Oracle JDK1.6,1.7目前是不支援的。
具體如何安裝Oracle JDK,請參見我的另一篇單獨的文章,[Ubuntu Linux下安裝Oracle JDK] http://www.linuxidc.com/Linux/2015-01/112627.htm
2. 安裝必備工具軟體
注意:這裡與官方的有個包不同,官方的包會報錯.

$sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

3. 設定USB存取許可權
將如下內容加入到/etc/udev/rules.d/51-android.rules檔案中

# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"
# adb protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"
# fastboot protocol on crespo/crespo4g (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"
# adb protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"
# fastboot protocol on stingray/wingray (Xoom)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"
# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"
# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"
# adb protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>"
# fastboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"
# usbboot protocol on panda (PandaBoard ES)
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"
# adb protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"
# fastboot protocol on grouper/tilapia (Nexus 7)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"
# adb protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"
# fastboot protocol on manta (Nexus 10)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"

然後執行如下命令,將上述檔案中的username替換為你的使用者名稱

4. 設定ccache
安裝ccache並將export USE_CCACHE=1加入到~/.bashrc中。

$sudo apt-get install ccache
$source ~/.bashrc

==========================================
第二部分:原始碼下載
==========================================
1. 安裝repo
(1) 建立目錄

$ mkdir ~/bin
$ PATH=~/bin:$PATH

(2) 下載repo工具
註:由於防火牆的原因,官方提供的連結無法使用,需替換為如下:
官方的為curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
可用的:

curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo

(3) 增加可執行許可權

$ chmod a+x ~/bin/repo

2. 初始化Repo用戶端
(1)建立目錄

$mkdir aosp
$cd aosp

(2) 初始化repo
註:後面可能出現網路錯誤,請先將如下內容加入到/etc/hosts中然後做後面的步驟。

74.125.71.82 www.googlesource.com
74.125.31.82 android.googlesource.com
203.208.46.172 cache.pack.google.com
59.24.3.173 cache.pack.google.com

至於為什麼要出現網路錯誤,你懂的!

$repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r2

注意:如果是在虛擬機器中執行,需要採用email驗證的方式,詳細參見參考資料[2].
設定git的使用者名稱和郵件地址,將您的真實email地址和name替換了:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

修改aosp/.resp/manifest.xml,將fetch=".."改為:
fetch="https://android.googlesource.com/"

3. 下載原始碼

$repo sync

注意:系統可能會提示你升級repo,最好不要升級,除非你有十足資訊解決升級後的一系列問題。

好了,慢慢等吧,短則數小時,長則幾天幾夜!我花了5個小時

--------------------------------------分割線 --------------------------------------

Android 4.4.4 發布下載 http://www.linuxidc.com/Linux/2014-06/103467.htm

最簡單的Ubuntu Touch & Android 雙系統安裝方式 http://www.linuxidc.com/Linux/2014-01/94881.htm

在Nexus上實現Ubuntu和Android 4.4.2 雙啟動 http://www.linuxidc.com/Linux/2014-05/101849.htm

Ubuntu 14.04 設定 Android SDK 開發環境 http://www.linuxidc.com/Linux/2014-05/101039.htm

64位元Ubuntu 11.10下Android開發環境的搭建(JDK+Eclipse+ADT+Android SDK詳細) http://www.linuxidc.com/Linux/2013-06/85303.htm

Ubuntu 14.04 x64設定Android 4.4 kitkat編譯環境的方法 http://www.linuxidc.com/Linux/2014-04/101148.htm

Ubuntu 12.10 x64 安裝 Android SDK http://www.linuxidc.com/Linux/2013-03/82005.htm

--------------------------------------分割線 --------------------------------------

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2015-01/112628p2.htm


IT145.com E-mail:sddin#qq.com