Android 2.2源碼編譯需注意幾個(gè)問題
Android 2.2源碼編譯需注意幾個(gè)問題是本文要介紹的內(nèi)容,主要是來里了解并學(xué)習(xí)Android 2.2的源碼編譯的內(nèi)容,具體關(guān)于Android 2.2的內(nèi)容來看本文詳解。
Android 2.2的編譯,從源碼直接make就ok。需要jdk6!這個(gè)編譯所需時(shí)間因機(jī)器配置不同而不同。我這次全部編譯大概用了兩個(gè)小時(shí)。編譯產(chǎn)生的文件在你源碼目錄/out/下面
編譯完了后編譯sdk,
- cd ~/android/src
- . build/envsetup.sh
- lunch sdk-eng
- make sdk
這里需要注意的是:Android 2.2編譯sdk當(dāng)中有個(gè)編譯doc的部分需要用jdk5!網(wǎng)上有介紹很多辦法,我采用了直接注釋(即略過doc的編譯的辦法)。這樣就免去了將開發(fā)環(huán)境中的jdk的版本換來換去的。具體做法是:注釋文件 build\core\droiddoc.mk 中的ALL_DOCS += $(full_target)這一行即可(這一行前面加#即可)。
關(guān)于這一點(diǎn),可以這樣,在編譯源碼時(shí)用jdk5.0,編譯sdk時(shí)用jdk6.0,但是仍然要注釋文件 build\core\droiddoc.mk 中的ALL_DOCS += $(full_target)這一行。關(guān)于用兩個(gè)版本的jdk我是這樣的做的:去sun官網(wǎng)將jdk1.5和1.6的安裝包都下載回來,都安裝,在/etc/profile中指定JDK_HOME JRE_HOME等環(huán)境變量,要切換版本時(shí),就在這邊的環(huán)境變量中寫上對(duì)應(yīng)版本的路進(jìn)即可,然后source profile,然后java -version查看版本,有時(shí)可能要重啟才會(huì)生效)如圖
Android 2.2的sdk編譯OK后,在1的ou/host/linux-x86目錄下面會(huì)有sdk目錄生成。里面所產(chǎn)生的內(nèi)容和網(wǎng)上下載到的sdk基本類似,如圖:(單擊放大)
安裝Eclipse的ADT插件。針對(duì)android 2.2的sdk至少需要0.96的ADT。你現(xiàn)在編譯的是Android 2.2的sdk,千萬不要用現(xiàn)在官方已經(jīng)升級(jí)的8.0的adt,那樣會(huì)出現(xiàn)在在eclipse中認(rèn)不到模擬器。(2010/12/10更新)而且在安裝ADT插件時(shí),jdk需要jdk...6_21(我同事那個(gè)是6_15就報(bào)了空指針異常了,如果你重新裝完了jdk,注意更新java_home等環(huán)境變量)。
此時(shí),新建的Android 2.2的工程,編譯會(huì)出錯(cuò)。Unableto get buffer of resource assetfile。就是類似前面的這樣的錯(cuò)誤。。。解決辦法網(wǎng)上也有很多。我采用了比較直接的:通過覆蓋android.jar包中的resource.arsc。這個(gè)resource.arsc文件可到win下面的sdk的android.jar中復(fù)制一個(gè)過來,然后直接粘貼到編譯出來的android.jar中。
解決辦法是將build sdk時(shí)候的product該為sdk,有兩種方法:
1、使用lunch更改配置:
- cd ~/android/src
- . build/envsetup.sh
- lunch sdk-eng
- make sdk
小結(jié):Android 2.2源碼編譯需注意幾個(gè)問題的內(nèi)容介紹完了,希望通過Android 2.2的源碼編譯內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助!