歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.10編譯Android froyo可能需要注意的幾個地方

Ubuntu 10.10編譯Android froyo可能需要注意的幾個地方

日期:2017/2/28 16:28:43   编辑:Linux教程

把系統升級到Ubuntu 10.10,首先對Ubuntu在UI上的突 飛猛進表示大家贊賞,很多細節都做得不錯,尤其是對字體效果的優化。

轉入正題,發現,隨著系統的升級,Android編譯的條件也變得相當苛刻了。如果單純的按照老版本的編 譯方法,貌似會很容易碰壁。從昨晚到現在,我就把系統重裝了兩次(從去年底入手新筆電到現在就裝過四次系統= =),原因都歸功於新環境下編譯Froyo。

首先,對於新版本的ubuntu,最好用64位的,在32位環境下編譯,在check階段都報錯。之前就是因為我裝的是32位的系統,結果一直沒成功,不 得不連夜下載64位系統裝上,杯具得一比。

warning ************************************************************
warning You are attempting to build on a 32-bit system.
warning Only 64-bit build environments are supported beyond froyo/2.2.
warning ************************************************************

復制代碼

如果一定要在32位環境下編譯,網上也有解決方案,我試了試,但沒成功。

其次是,編譯器的版本也要注意,就是gcc和g++,剛開始,我一直安裝4.4版本的,結果在編譯的時候,發現不少代碼編譯不通過。起初沒留意,自己邊改 邊把C/C++溫習了一把= =,但終究不是解決的辦法,總會報些不倫不類的低級錯誤。想想估計是編譯器版本的問題,新版本的編譯器對代碼解析更加嚴格了吧。後來還是換回了4.3版本的。
如果以及安裝來4.4的,可以在安裝4.3後建立鏈接
cd /usr/bin
ln -s gcc-4.3 gcc
ln -s g++-4.3 g++
復制代碼

然後是,SDK編譯的必要工具包,如果完全挪用32位編譯的工具包,會發現編譯過程中缺少很多必要的libs,出現類似 cannot find -lxxx 的錯誤。因為缺少相關的libs
建議在apt-get install的時候,加上這兩個東東:
g++-multilib g++-4.3-multilib
復制代碼
或者,直接大膽的拷貝這個= =
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc
復制代碼

還有就是,Java JDK版本,之前都說,android只支持1.5版本的JDK,現在,對於Froyo,貌似支持1.6的了,但杯具的是,不支持1.5,編譯時在 check階段,會報錯,必須1.6版本的JDK。所以啊,編譯的時候注意了,既然允許1.6了,就不要在1.5上掙扎了,hoho~

最後,就是,做好以上准備之後,make之,以為可以看看電視喝喝茶什麼的,www.linuxidc.com結果,給我來了這麼一個error:
build/core/base_rules.mk:128: *** dalvik/libcore: MODULE.TARGET.JAVA_LIBRARIES.core already defined by libcore. Stop.
網上有解決方案,請大膽的點擊這裡,我沒試,同步太耗時間來,我直接找到base_rules.mk的第128行,用#注釋之! 像這樣: #$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
復制代碼


需要聲明的是,這只是在非常情況下做的非常處理,如果在這個地方沒報錯,就不用修改源文件來。
其實,我覺得,在check tools階段,需要校驗很多模塊與工具,比如什麼系統是32位還是64位啊,JDK那個版本啊之類的,如果檢測到某個工具不滿足要求就報錯了。我們可以 嘗試將這個校驗條件給注釋掉,跳過對該工具的檢測。這種檢測應該,我說的是應該,只是為保證安全且成功的編譯而提供的一種校驗機制,是需要的,但不是必須 的,所以,在一些非常情況,我們可以做一下非常處理。

以上就是我在10.10倒騰了一天的心得體會,希望對大家有幫助,有不對的地方,請大膽拍磚指正,謝謝!

Copyright © Linux教程網 All Rights Reserved