在Ubuntu上下載、編譯、運行Android系統

在Ubuntu上下載、編譯、運行Android系統


Linux開發環境搭建 三 (在Ubuntu上Android/Linux編譯環境的準備)一文中,我們已經將Android的編譯環境搭建OK。在本文中,我們以Android_4.4.2爲例,說明其下載、編譯及運行的方法。


一、Android源碼下載

Google被封,對於站位Google陣營的我們,無疑是一個不幸。因此,國人想要下載一份Android源碼,將變得困難重重。
Google官網下載行不通(除非有人翻牆),網上有心人整理了如何曲線救國的方法,
http://blog.csdn.net/zbunix/article/details/8460422/
即便如此,博主並沒有採用這樣的方式下載Android源碼。兩個原因,一是這種下載方式需要安裝git,是連同repo一併下載的,這樣code size會很大;二是下載時間超長,或許長達幾天的下載時間,過程中還有可能下載失敗。

其實,
還有好心人,下載源碼去repo後,壓縮打包,放於網絡,與人方便。咱們也可以下載這樣的源代碼。下面便是博主分享的Android_4.4.2源代碼,歡迎下載。
http://pan.baidu.com/s/1micVfyK


二、編譯Android

  1. 將下載下來的Android_4.4.2壓縮文件android4.4.2.tar.gz放到~/目錄(路徑可自由決定),然後解壓。使用如下命令解壓android4.4.2.tar.gz,將出現442文件夾。
    cd ~
    tar -zxvf android4.4.2.tar.gz

  2. 進入442目錄,執行make,開始編譯Android
    cd 442
    make

  3. 編譯過程中可能遇到問題
    如果在編譯過程中,遇到build error,解決的方法是,百度error信息,然後嘗試找到解決方法,然後,繼續make,直到編譯完成。

編譯結束,如下圖:
這裏寫圖片描述
編譯結束後,會在442/目錄下生成out/目錄,其下包含編譯生成的image文件等:
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt
這裏寫圖片描述

在前面已經提及過,第一次full build的時間比較久,博主實踐的結果是6~7小時。


三、運行模擬器emulator

模擬器運行需要四個文件,分別是Linux Kernel鏡像zImage和Android鏡像文件system.img、userdata.img和ramdisk.img。
執行emulator命令時,如果不帶任何參數,則Linux Kernel鏡像默認使用~/442/prebuilts/qemu-kernel/arm/目錄下的kernel-qemu文件,而Android鏡像文件則默認使用ANDROID_PRODUCT_OUT(待會兒export)目錄下的system.img、userdata.img和ramdisk.img,也就是我們剛剛編譯出來的鏡像文件。

  1. 配置emulator環境變量,在Terminal終端中輸入:
    export PATH=$PATH:~/442/out/host/linux-x86/bin
    export ANDROID_PRODUCT_OUT=~/442/out/target/product/generic

  2. 運行模擬器
    cd 442
    emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ./out/target/product/generic/ramdisk.img

注意,

  1. 如果遇到如下類似的error,使用chmod -R 777 ~/442/prebuilts/qemu-kernel/* 修改權限。
    qemu: could not load kernel ‘./prebuilts/qemu-kernel/arm/’

  2. 如果模擬器有啓動,但是一直黑屏,可以試試如下命令
    emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ./out/target/product/generic/ramdisk.img

  3. 上面命令中,ramdisk.img一定要帶路徑,否則出錯。

終於見到熟悉的Android界面

這裏寫圖片描述


至此,我們在模擬器上運行了自己編譯出來的Android image。其中內核卻是使用預編譯準備好的kernel-qemu(or kernel-qemu-armv7)。那麼,我們是否也可以編譯自己的linux內核呢?可以的。下一章,我們將學習如何在Ubuntu上編譯自己的linux內核uImage,敬請期待……


itxiebo
20160404

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章