编译Android源码
生活随笔
收集整理的這篇文章主要介紹了
编译Android源码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過參考網上的相關資料,我編譯Android源碼的步驟如下:
- 1 我的系統是Ubuntu 8.04
- 2 系統上必須安裝以下工具(摘自網上的資料):
?
?sudo apt-get install build-essential
?sudo apt-get install make
?sudo apt-get install gcc
?sudo apt-get install g++
?sudo apt-get install libc6-dev
?
?sudo apt-get install flex
?sudo apt-get install bison
?sudo apt-get install patch
?sudo apt-get install texinfo
?sudo apt-get install libncurses-dev
?
?sudo apt-get install git-core gnupg??//(gnupg系統可能已自帶)
?sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl
?sudo apt-get install ncurses-dev?
?sudo apt-get install zlib1g-dev
?sudo apt-get install valgrind(可選,有21M大,我覺得一般人是用不到的)
?sudo apt-get install python2.5 (實際上不用裝,Ubuntu 8.04 已經自帶)
?sudo apt-get install sun-java5-jdk
?
?注意:
?a. 不要用 sun-java6-jdk, 不然在make sdk, 具體來說是make doc這一步中, 遇到這個錯誤:
???Docs droiddoc: out/target/common/docs/dx
???javadoc: error - In doclet class DroidDoc, method start has thrown an
???exception java.lang.reflect.InvocationTargetException
???com.sun.tools.javac.code.Symbol$CompletionFailure: class file for
???sun.util.resources.OpenListResourceBundle not found
?b. 網上資料說需要設置環境變量, 但我并沒有設置:
??export ANDROID_JAVA_HOME=$JAVA_HOME
??
?c. 網上并沒有提及要安裝ncurses-dev, 但安裝之前我編譯過程中會出現編譯錯誤.
? - 3 建立android源碼的存放目錄
?$ mkdir ~/open_src
?$ mkdir ~/open_src/android
?$ cd ~/open_src/android
?$ mkdir bi - 4 下載repo腳本,放到~/open_src/android/bin目錄下,加上可執行權
????????? $ curl http://android.git.kernel.org/repo > repo
??????????$ sudo mv repo ~/open_src/android/bin
????????? $ sudo chmod a+x ~/open_src/android/bin/repo?
- 5 在源碼存放目錄android中執行
?$ ~/open_src/android/bin/repo init -u git://android.git.kernel.org/platform/manifest.git
?//中間會提示輸入電子郵件什么的, 如果你打算要提交patch的話,用google accounts注冊過的郵箱
? - 6 在android目錄中執行repo sync就可以開始下載源碼了.
?我們也可以從其他地方把源碼復制到android目錄, 而我正是這么做的. - 7 編譯源碼, 并得到~/open_src/android/out 目錄
?在命令行執行make命令:
?$make
?這 是一個很漫長的過程, 等吧...... - 8 測試運行
?8.1 先設置環境變量:
??打開~/.bashrc文件, 并在最后添加下面兩行:
??export PATH=$PATH:~/open_src/android/out/host/linux-x86/bin
??export ANDROID_PRODUCT_OUT=~/open_src/android/out/target/product/generic
?
?8.2 運行模擬器:
??emulator --debug-init -skin QVGA-L??//可能會提示unknown option: --debug-init, 去掉--debug-init即可
??或者直接執行emulator, 這樣使用的是默認的皮膚
?
?如 果最后能進入到系統并看到一個大時鐘, 說明就大功告成了.
?
? - 9 后續編譯:
?????????? 先在android目錄下執行
?????????? $ . build/envsetup.sh
???????????然 后你就會多出幾個可用的命令。在改了Contacts聯系人項目后,可以簡單的執行一下命令來單獨編譯這個部分:
?????????? $mmm packages/apps/Contacts/
???????? ?為了可以直接測試改動,需要生成新的system.img,在android目錄下執行:
?????????? $ make snod
????????? 當然,如果你改動的是emulator或者其它外圍相關的,而非系統內部的東西,就不只是要重新生成system.img了
- 以下是編譯成功后的最后一些輸出:
Install: out/target/product/generic/system/xbin/scp
Notice file: system/extras/showmap/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showmap.txt
Install: out/target/product/generic/system/xbin/showmap
Notice file: system/extras/showslab/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/showslab.txt
Install: out/target/product/generic/system/xbin/showslab
Notice file: external/sqlite/dist/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/sqlite3.txt
Install: out/target/product/generic/system/xbin/sqlite3
Notice file: external/dropbear/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/ssh.txt
Install: out/target/product/generic/system/xbin/ssh
Install: out/target/product/generic/system/xbin/strace
Notice file: system/extras/su/NOTICE -- out/target/product/generic/obj/NOTICE_FILES/src//system/xbin/su.txt
Install: out/target/product/generic/system/xbin/su
Install: out/target/product/generic/system/xbin/timeinfo
Copy: out/target/product/generic/system/etc/apns-conf.xml
Copying: out/target/product/generic/obj/NOTICE_FILES/src/kernel.txt
Finding NOTICE files: out/target/product/generic/obj/NOTICE_FILES/hash-timestamp
Combining NOTICE files: out/target/product/generic/obj/NOTICE.html
gzip -c out/target/product/generic/obj/NOTICE.html > out/target/product/generic/obj/NOTICE.html.gz
zip -qj out/target/product/generic/system/etc/security/otacerts.zip build/target/product/security/testkey.x509.pem
Generated: (out/target/product/generic/android-info.txt)
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
轉載于:https://www.cnblogs.com/AlexCheng/archive/2010/09/09/2120212.html
總結
以上是生活随笔為你收集整理的编译Android源码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线支付流程
- 下一篇: Android系统语言默认设置为简体中文