編譯android原始碼(aosp)

來源:互聯網
上載者:User

標籤:

 

 步驟1:按照官方的文檔,下載源碼,配置環境,並執行相應的命令。最好按照官方的硬體和系統配置build。 
build的版本是6.0,源碼目錄是/home/koder/android-source-20151229 Requirements:
  • 下載的源碼很大,估計有30,40G左右。加上build,最好騰出100+的空間來。
  • 按官方說的MAC OS或者Ubuntu LTS (14.04)X64,自己是Ubuntu LTS (14.04) 64位。
  • 硬體問題:記憶體不足,看文末問題1。
   有一個注意文檔說的:lunch aosp_arm-eng這裡是要build出一個適應於emulator的img,並且允許debug。 aosp_arm-eng 表示target或者build configuration, 格式是: BUILD-BUILDTYPE aosp_arm是BUILD。如果希望build不同裝置或者emulator的img,就要不同的值。點擊這裡有介紹。其中arm是叫做code name eng是BUILDTYPE:
Buildtype Use
user limited access; suited for production
userdebug like "user" but with root access and debuggability; preferred for debugging
eng development configuration with additional debugging tools

來源: https://source.android.com/source/building.html
target有的例子有這些:
Device Code name Build configuration
Nexus 6P angler aosp_angler-userdebug
Nexus 5X bullhead aosp_bullhead-userdebug
Nexus 6 shamu aosp_shamu-userdebug
Nexus Player fugu aosp_fugu-userdebug
Nexus 9 volantis (flounder) aosp_flounder-userdebug
Nexus 5 (GSM/LTE) hammerhead aosp_hammerhead-userdebug
Nexus 7 (Wi-Fi) razor (flo) aosp_flo-userdebug
Nexus 7 (Mobile) razorg (deb) aosp_deb-userdebug
Nexus 10 mantaray (manta) full_manta-userdebug
Nexus 4 occam (mako) full_mako-userdebug
Nexus 7 (Wi-Fi) nakasi (grouper) full_grouper-userdebug
Nexus 7 (Mobile) nakasig (tilapia) full_tilapia-userdebug
Galaxy Nexus (GSM/HSPA+) yakju (maguro) full_maguro-userdebug
Galaxy Nexus (Verizon) mysid (toro) aosp_toro-userdebug
Galaxy Nexus (Experimental) mysidspr (toroplus) aosp_toroplus-userdebug
PandaBoard (Archived) panda aosp_panda-userdebug
Motorola Xoom (U.S. Wi-Fi) wingray full_wingray-userdebug
Nexus S soju (crespo) full_crespo-userdebug
Nexus S 4G sojus (crespo4g) full_crespo4g-userdebug

Do not use 4.1.1 on a Nexus 7 that was originally sold with 4.1.2 or newer.

 來源: https://source.android.com/source/running.html

步驟2:順利make成功後。 
會在目錄/home/koder/android-source-20151229/out/target/product/generic下產生系統系統的檔案,包括system.img, ramdisk.img,userdata.img等。 然後運行,由於build的是emulator的img,所以就運行虛擬機器。官方文檔說,會自動把環境變數設定好,但是執行emulator的時候,發現並沒有該命令,所以需要自己找到emulator的目錄。emulator在prebuilts/android-emulator下,prebuilts目錄是官方提供的,下載源碼時就已經build好的一些工具和庫,包括kernel也在這下面,所以如果自己要build kernel,就看這裡。題外話了,回到emulator,切換到emulator目錄,運行:./emulator \ -sysdir ${ANDROID_PRODUCT_OUT} \ -system ${ANDROID_PRODUCT_OUT}/system.img \ -ramdisk ${ANDROID_PRODUCT_OUT}/ramdisk.img \ -data ${ANDROID_PRODUCT_OUT}/userdata.img \-kernel /home/koder/android-source-20151229/prebuilts/qemu-kernel/arm/kernel-qemu-armv7 \-skindir /home/koder/android-source-20151229/sdk/emulator/skins \ -memory 2048 \ -partition-size 2048 \ -skin WVGA800 \ -scale 0.7 emulator命令:http://developer.android.com/tools/help/emulator.html自己改好對應目錄就好了。個人環境變數是: JAVA_HOME=/home/koder/Documents/jdk1.8.0_65PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarANDROID_HOME=/home/koder/Documents/android-sdk-linuxANDROID_BUILD_OUT_HOST=/home/koder/android-source-20151229/out/host/linux-x86/binANDROID_PRODUCT_OUT=/home/koder/android-source-20151229/out/target/product/genericPATH=$ANDROID_HOME:$ANDROID_BUILD_OUT_HOST:$PATHexport JAVA_HOME PATH CLASSPATH ANDROID_PRODUCT_OUT 
           到這裡就OK了。 
 
BUILD過程中遇到的問題: 1. 提示:increasing heap size。就是Java虛擬機器的heap size不夠了,添加環境變數:export _JAVA_OPTIONS=-Xmx8192m
賦值大小看自己機器了。然而,即使這樣設定了,有時候也不起作用,因為可能機器本身硬體記憶體就不足了,根本就沒有8G那麼多好嗎。由於自己的機器是8G的,而且運行在虛擬機器上,只分配到4G的空間,所以build的過程中,記憶體不足的問題卡了自己很久很久,而且官方說,最好是有16g ram以上,幾乎要放棄了。最後想了個辦法,增加swap記憶體。至於如何增加swap記憶體,參考這裡。 自己直接swap增加了16G,由於本來是8G,所以最好是24G了。感歎一下,UNIX的“Everything is file”的偉大,硬體不夠,軟體來補,呵呵~~~解決這個記憶體問題後,就順利的build出來了。  

另外:

1.查看cccache:watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
 

編譯android原始碼(aosp)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.