日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Ubuntu >内容正文

Ubuntu

ubuntu编译android4.0

發(fā)布時(shí)間:2024/9/3 Ubuntu 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ubuntu编译android4.0 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
其實(shí),android 4.0發(fā)布之后的幾天就想編譯出來(lái)體驗(yàn)一下ICS,事情多得一直拖到今天,另外一些誤導(dǎo)人的傳聞越來(lái)越兇,說(shuō)什么編譯環(huán)境最低要求memory為16G。 今天就拿實(shí)驗(yàn)室的機(jī)器跑了一通,編譯無(wú)不良反映,一切正常。 簡(jiǎn)單說(shuō)說(shuō)機(jī)器的環(huán)境:
  • CPU:i7 2600(8線程)
  • Memory:4G
  • System:ubuntu 10.04(64位)
  • 復(fù)制代碼

    雖然說(shuō)機(jī)器的內(nèi)存相對(duì)于CPU來(lái)說(shuō)偏低了,但是我之前編譯android 2.3時(shí),也就半個(gè)小時(shí)左右。ICS的話,估計(jì)也能完成,時(shí)間問(wèn)題而已。
    至于為什么用ubuntu 10.04 (64位),因?yàn)閷W(xué)校用的是史上最變態(tài)無(wú)聊的drcom,沒(méi)找到ubuntu 11.10的64位版本,32位倒是有。還有一點(diǎn)的是ubuntu 11.10的gcc版本更新了,編譯過(guò)程中會(huì)出現(xiàn)一些errors,不過(guò)很簡(jiǎn)單就可以解決的。 Android 4.0的源代碼壓縮包可以去android.com去下載,下載后解壓縮(tar vxzf)即可,解壓之后一共有4.7G。


    進(jìn)入解壓之后的目錄,ls一下就可以看到Makefile了。指向
  • build/core/main.mk
  • 復(fù)制代碼

    編譯之前要安裝一些依賴包什么的,還有JDK之類的東西。 因?yàn)橹熬幾g過(guò)android的源代碼,機(jī)器已經(jīng)安裝了,而且是64bit的系統(tǒng),所以在terminal轉(zhuǎn)到源代碼目錄下,直接make即可,要修改編譯中分配的線程的話,make –jN即可,N為線程數(shù)。e.g :
  • make –j6
  • 復(fù)制代碼
    -------------------------------------------------------------------- 編譯準(zhǔn)備工作------------------------------------------------------------------

    附上需要安裝的依賴:
  • $ sudo apt-get update
  • $ sudo apt-get -y install git-core?
  • $ sudo apt-get -y install gnupg?
  • $ sudo apt-get -y install sun-java6-jdk flex
  • $ sudo apt-get -y install bison?
  • $ sudo apt-get -y install gperf?
  • $ sudo apt-get -y install libsdl-dev?
  • $ sudo apt-get -y install libesd0-dev?
  • $ sudo apt-get -y install libwxgtk2.6-dev?
  • $ sudo apt-get -y install build-essential?
  • $ sudo apt-get -y install zip?
  • $ sudo apt-get -y install curl?
  • $ sudo apt-get -y install libncurses5-dev?
  • $ sudo apt-get -y install zlib1g-dev?
  • $ sudo apt-get -y install valgrind
  • 復(fù)制代碼

    (如果是32bit的系統(tǒng)的話,則要更改幾個(gè)Android.mk文件)
  • /external/clearsilver/cgi/Android.mk?
  • /external/clearsilver/java-jni/Android.mk?
  • /external/clearsilver/util/Android.mk?
  • /external/clearsilver/cs/Android.mk
  • 復(fù)制代碼
    用gedit打開(kāi),修改m64為m32即可


    另外
  • build/core/main.mk
  • 復(fù)制代碼


    也要把


  • ifneq (64,$(findstring 64,$(build_arch)))
  • 復(fù)制代碼

    修改為

  • ifneq (i686,$(findstring i686,$(build_arch)))
  • 復(fù)制代碼
    -------------------------------------------------------------------- 編譯過(guò)程------------------------------------------------------------------

    在terminal中
  • $make?
  • 復(fù)制代碼 編譯開(kāi)始……

    可以看到platform version為4.0.1,然后開(kāi)始漫長(zhǎng)的等待。


    如果是32bit的系統(tǒng),就可能會(huì)出現(xiàn)一下兩個(gè)問(wèn)題

    error 1、
  • make: ***
  • [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error??1
  • 復(fù)制代碼


    在terminal中輸入

  • $ gedit frameworks/base/libs/utils/Android.mk
  • 復(fù)制代碼


    將下面這一行

  • LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
  • 復(fù)制代碼 改為
  • LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
  • 復(fù)制代碼 error 2、
  • make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]? ?error 1
  • 復(fù)制代碼

    此處編譯錯(cuò)誤是由于ubuntu 11.10采用了GCC4.6.1導(dǎo)致的。 解決方法: 修改源碼目錄下
  • /build/core/combo/HOST_linux-x86.mk
  • 復(fù)制代碼
    將以下語(yǔ)句
  • HOST_GLOBAL_CFLAGS
  • += -D_FORTIFY_SOURCE=0
  • 復(fù)制代碼
    修改為
  • HOST_GLOBAL_CFLAGS
  • += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
  • 復(fù)制代碼


    打開(kāi)system monitor查看一下系統(tǒng)的資源利用情況,前二十分鐘,cpu各個(gè)線程幾乎都是滿載工作,memory一般維持在1.5G左右。



    然后三十分鐘過(guò)后,memory開(kāi)始直線上升了,主要是在執(zhí)行一些copying和install之類的工作,CPU的線程就一般不超過(guò)10%了。期間電腦卡爆,memory滿載一直持續(xù)到編譯工作的完成。


    編譯過(guò)程大概花了兩個(gè)小時(shí),如果機(jī)器的memory上到8G的話,估計(jì)時(shí)間也就40分鐘左右。但是一些人說(shuō)的最低要求16G內(nèi)存是很坑人的,都沒(méi)有試過(guò),然后就以訛傳訛了。
    我的電腦為AMD X4 640 內(nèi)存為4G的32位ubuntu11.10編譯android 2.3也就一個(gè)小時(shí)。加到8G內(nèi)存的話,編譯android 4.0估計(jì)也沒(méi)壓力。(CPU超頻到3.52GHZ,cool and quiet關(guān)閉) 編譯成功會(huì)會(huì)再源碼目錄下生成一個(gè)out文件夾,大小有12G,所有所在的掛載區(qū)剩余空間最好大于20G。
    相應(yīng)的img在
  • out/target/product/generic
  • 復(fù)制代碼 里面,一共有三個(gè)img,ramdisk.img 、system.img、 user.img

    其中ramdisk.img是一個(gè)分區(qū)映像文件,kernel啟動(dòng)時(shí),ramdisk負(fù)責(zé)init,system.img包括了主要系統(tǒng),系統(tǒng)app等,掛載于/system, userdata.img包括了一些用戶數(shù)據(jù),被掛載到/data下,diy過(guò)固件的童鞋應(yīng)該是很清楚這一點(diǎn)的。
    另外還有root、system、data三個(gè)文件夾,其實(shí)就是上述三個(gè)img解壓之后的內(nèi)容而已.root對(duì)應(yīng)ramdisk.img.。 可以進(jìn)去system目錄下查看一下安裝過(guò)的app

    然后再順便把a(bǔ)ndroid 4.0的SDK編譯出來(lái),因?yàn)閙ake編譯并不包含kernel和SDK。 在源碼目錄執(zhí)行
  • $make PRODUCT-sdk-sdk
  • 復(fù)制代碼 即可。 SDK編譯的話,時(shí)間就短了很多,也就不到30分鐘吧。




    編譯之后可以在out/host/linux-x86/sdk發(fā)現(xiàn)編譯出來(lái)的android 4.0 SDK包,跳到tools,可以看到一些android工具之類的,其中emulator是用來(lái)加載啟動(dòng)編譯好的以上3個(gè)img文件。


    好吧,來(lái)看看android 4.0的面目。
    配置一下export
  • $sudo gedit?
  • /etc/bash.bash.rc
  • 復(fù)制代碼

    在后面增加
  • export ANDROID_SDK_HOME=/usr/android4.0/android4.0/out/host/linux-x86/sdk/android-sdk_eng.xumin_linux-x86
  • export PATH=$ANDROID_SDK_HOME/tools:$PATH?
  • export ANDROID_PRODUCT_OUT=/usr/android4.0/android4.0/out/target/product/generic
  • 復(fù)制代碼

    保存退出,然后再開(kāi)一個(gè)shell,輸入
  • $emulator
  • 復(fù)制代碼

















    就可以看到android 4.0的虛擬機(jī)了。
    額,分辨率貌似有點(diǎn)低,好吧,在eclipse下面引入剛剛編譯好的SDK,配置一個(gè)android 4.0的AVC,來(lái)點(diǎn)有平板味道的android虛擬機(jī)。 先安裝ADT插件
  • http://dl-ssl.google.com/android/eclipse/
  • 復(fù)制代碼



























    Android 4.0的UI看起來(lái)很清爽,沒(méi)有2.3那種沉悶感,解鎖是全新方式,主菜單里面分了兩個(gè)類別,圖標(biāo)很多都是全新的面孔。 一個(gè)是APP,另外一個(gè)是WIDGETS,小控件之類的東西,可拖動(dòng)。
    看一下系統(tǒng)信息,可發(fā)現(xiàn)kernel版本是2.6.29的,可以下載新的內(nèi)核3.0.1重新編譯。

    --------------------------------------------------------------------------亂談分割線-------------------------------------------------------------------------


    Android 4.0是在Android3.X基礎(chǔ)上升級(jí)的,有了真正的平板上面的android系統(tǒng),并不像以前的android 2.3那樣,拿一個(gè)手機(jī)的系統(tǒng)整到平板上面去跑,很多東西看著都別扭。 現(xiàn)在傳出來(lái)的消息是RK2918運(yùn)行ICS,基本程序和應(yīng)用問(wèn)題不大,但是3D應(yīng)用會(huì)稍微吃力,依賴于android4.0的代碼優(yōu)化好,沒(méi)有太大問(wèn)題,然后國(guó)內(nèi)的幾個(gè)廠家都想先撥頭籌,現(xiàn)在距離android 4.0發(fā)布也就兩周,拿到源代碼的時(shí)間較短,新系統(tǒng)的移植出現(xiàn)的各種新bug,flash支持什么的,加上android 2.3殘留下來(lái)的老毛病,也有得折騰的。希望廠家淡定點(diǎn),不要急著量產(chǎn)android 4.0,先完善產(chǎn)品。Rk29上android 4.0還是感覺(jué)是為了RK30作為測(cè)試而已,也順手榨干RK29的剩余價(jià)值,真正主力還是在RK30雙核。

    ----------------------------------------------------------------------------------------------------------?
    另外提一下:
    關(guān)于android 4.0與內(nèi)核的關(guān)系
    有些玩家誤以為2.6.X的內(nèi)核不是真正的android 4.0
    ? ?? ?個(gè)人有點(diǎn)不大同意,首先一點(diǎn),內(nèi)核的更新一般都是更新了一些android平臺(tái)的設(shè)備驅(qū)動(dòng)和修正bug之類的。事實(shí)上,更新并不是非常大,更加不存在真假android 4.0的說(shuō)法。 還有網(wǎng)上的一篇文章的一句話,引用一下
    樊建鵬:系統(tǒng)版本的升級(jí)從Android2.3升到Android4.0,需要內(nèi)核版本的同步升級(jí)支持,內(nèi)核要為3.0.8版才行,如果是2.6.X則無(wú)法實(shí)現(xiàn)好的兼容性。

    這位工程師的意思是說(shuō)Rk29平臺(tái)的android 4.0最好是更新到3.0kernel,要不就會(huì)有一些兼容性的問(wèn)題,其實(shí)也就是一些驅(qū)動(dòng)、bug什么的,也沒(méi)什么大不了的。而其他方案是否更新到新版本的內(nèi)核,還得看方案,不過(guò)升級(jí)了,還是多了一個(gè)可宣傳的噱頭。 另外關(guān)于之前說(shuō)的androidlinux kernel踢出一事,除了更新kernel麻煩一點(diǎn)點(diǎn),編譯一個(gè)新的kernel是非常簡(jiǎn)單的事情而已,3.0.X的kernel隨便上,另外官方下載的源代碼編譯出來(lái)的初始kernel版本也2.6.29,難道官方放出來(lái)的android 4.0就不是真正的ICS了?

    完畢

    總結(jié)

    以上是生活随笔為你收集整理的ubuntu编译android4.0的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。