android 源碼編譯及其運行模擬器相關問題記錄

    最近一直在看android源碼相關的文檔,包括編譯源碼,還有framework層的代碼,本人很懶,一直沒有寫博客,今天想本身在編譯一下源碼,而且運行在模擬器中。linux

    源碼的版本不一樣,須要的jdk可能也有所不一樣,一切都參照官方給與的文檔,下載源碼的方法也參考官方文檔。android

    注意點:1.環境變量要設置正確,不要出現錯誤api

               2.基本沒有一次就能順利編譯源碼的,多少都會出錯,根據提示修改錯誤,安裝一些包和庫就能夠搞定,具體問題具體查找,我遇到的問題也可多了,都是按官方文檔解決的。有些問題可能和你的編譯環境相關,這裏不一一介紹了。bash

   這裏把個人環境變量設置一口氣發出來:jvm

    執行命令 gedit ~/.bashrc  打開配置文件後,加入如下內容ui

export ANDROID_HOME=/home/cai/candy/develop/adt-bundle-linux-x86_64-20131030/sdkspa

export PATH=$PATH:$ANDROID_HOME/platform-tools

export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45debug

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar orm

export PATH=$PATH:$JAVA_HOME/binblog

    做爲參考就能夠,我編譯的源碼是4.3,若是你編譯最新的4.4估計須要jdk是版本爲7。

    下載源碼後,編譯源碼,仍然按照官方文檔,執行

    source build/envsetup.sh 

    lunch

    出現一些須要選擇的項目

You're building on Linux

Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. aosp_flo-userdebug
6. full_grouper-userdebug
7. full_tilapia-userdebug
8. mini_armv7a_neon-userdebug
9. mini_mips-userdebug
10. mini_x86-userdebug
11. full_mako-userdebug
12. full_maguro-userdebug
13. full_manta-userdebug
14. full_arndale-userdebug
15. full_toroplus-userdebug
16. full_toro-userdebug
17. full_panda-userdebug

我這裏選擇的1,aosp_arm-eng

我主要是在模擬器中完成,因此aosp就能夠了。

最後make -j4

編譯出錯大體都是和少一些庫有關,根據提示安裝相關的庫就能夠。

編譯完成後,咱們就可使用android模擬器emulator運行編譯出來的源碼,編譯完成會生成相應的system.img,userdata.img,ramdisk.img都在~/android4.3/out/target/product/generic下面能夠看到,所以咱們須要添加環境變量

export ANDROID_PRODUCT_OUT=~/android4.3/out/target/product/generic

export ANDROID_PRODUCT_OUT_BIN=~/android4.3/out/host/linux-x86/bin

export PATH=$PATH:$ANDROID_PRODUCT_OUT_BIN:$ANDROID_PRODUCT_OUT

最後只要執行emulator就能夠啓動模擬器了

可是,從新啓動一個命令終端,執行emulator就會出現如下錯誤

emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

不知道你們遇到過沒,因而我查了一些資料,發如今環境變量裏添加如下源碼路徑就行了

export ANDROID_BUILD_TOP=~/android4.3

多是和版本有關係,目前解決方法設置ANDROID_BUILD_TOP環境變量

emulatro -skin WSVGA

以後就能夠修改framework源碼,而後在模擬器中查看效果。

相關文章
相關標籤/搜索