2021-05-12 14:32:11
基於Ubuntu 14.04 LTS編譯Android4.4.2原始碼
環境準備:
基本環境: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
相關文章