在Ubuntu10.04上如何編譯Android2.3?
Ubuntu10.04啟動速度快,桌面環境相較于之前的版本來說更加絢麗。而且ubuntu是免費的,想使用ubuntu的用戶,可以從官方網站─下載到最新的ubuntu的ISO鏡像,也可以在官方網站申請讓總部親自發給你一張光盤,感受一下ubuntu系統的強大的功能。筆者在Ubuntu10.04系統32位機上安裝編譯Android2.3源碼,其步驟和注意事項如下:
1.安裝JDK6
對于Android2.3系統,不要安裝JDK5,應該安裝最新的JDK6。
如果安裝了JDK6,Android會自動按64位編譯,如果系統是32位的,會有編譯錯誤,后面會說如何修改這個錯誤。
- sudoadd-apt-repository"debhttp://archive.canonical.com/lucidpartner"
- sudoadd-apt-repository"deb-srchttp://archive.canonical.com/Ubuntulucidpartner"
- sudoapt-getupdate
- sudoapt-getinstallsun-java6-jdk
- sudoupdate-java-alternatives-sjava-6-sun
安裝完后,需要手動設置JAVA_HOME,JRE_HOME,CLASS_PATH為JDK6的安裝路徑。
2.安裝各種包
- $sudoaptitudeinstallgit-coregnupgflexbisongperflibsdl-devlibesd0-devlibwxgtk2.6-devbuild-essentialzipcurllibncurses5-devzlib1g-dev
3.安裝Repo
- $mkdir~/bin
- $exportPATH=~/bin:$PATH
- $curlhttp://Android.git.kernel.org/repo>~/bin/repo
- $chmoda+x~/bin/repo
4.下載Android源碼
- $mkdir~/Android2.3
- $cd~/Android2.3
- $repoinit-ugit://Android.git.kernel.org/platform/manifest.git
- $reposync
這一步持續時間很長,整個源碼+SDK共5G左右,我是下載了一個晚上才搞定,網速不給力啊。。。
5.編譯Android2.3
先exportAndroid_JAVA_HOME=$JAVA_HOME
- $cd~/Android2.3
- $sourcebuild/envsetup.sh
- $lunch
- $make
在make的時候會提示出錯:
- ************************************************************
- Youareattemptingtobuildona32-bitsystem.
- Only64-bitbuildenvironmentsaresupportedbeyondfroyo/2.2.
- ************************************************************
因為Android2.3默認是64位的系統上編譯,需要手動修改build/core/main.mk,把這個判斷部分注釋掉:
- #ifneq(64,$(findstring64,$(build_arch)))
- #$(warning************************************************************)
- #$(warningYouareattemptingtobuildona32-bitsystem.)
- #$(warningOnly64-bitbuildenvironmentsaresupportedbeyondfroyo/2.2.)
- #$(warning************************************************************)
- #$(errorstop)
- #endif
重新make,如果是安裝了JDK6版本,會又報錯:
- Docsdroiddoc:out/target/common/docs/api-stubs
- Couldnotload‘clearsilver-jni’
- java.library.path=out/host/linux-x86/lib
- make:***[out/target/common/docs/api-stubs-timestamp]Error45
- make:***Waitingforunfinishedjobs….
- Couldnotload‘clearsilver-jni’
- java.library.path=out/host/linux-x86/lib
- make:***[out/target/common/docs/doc-comment-check-timestamp]Error45
這是由于clearsilver在編譯時如果檢測到使用JavaJDK6,就使用64位編譯,因為Google的一個員工更新了幾個文件。這里可以看到詳細的修改記錄:http://android.git.kernel.org/?p=platform/external/clearsilver.git;a=commitdiff;h=d36910a8110d8377b22301274d2b5131a732a72b
修改這幾個文件,該回到32位編譯環境即可:
- external/clearsilver/cgi/Android.mk
- external/clearsilver/java-jni/Android.mk
- external/clearsilver/util/Android.mk
- external/clearsilver/cs/Android.mk
把編譯選項-m64改成-m32即可
重新make,大概不到一個小時就make完了。
總結:
希望本文介紹的在32位Ubuntu10.04上編譯Android2.3的方法能夠對讀者有所幫助,更多有關linux系統的知識好還有待于讀者去探索和學習。
【編輯推薦】