Ubuntu 10.04 下 android 源碼下載 與 編譯

來源:互聯網
上載者:User

一.PC工作環境準備

首先安裝一些必須的工具包:(根據安裝的ubuntu 64和32位系統,進行如下環境配置)

 

Ubuntu Linux (32-bit x86):
sudo apt-get install git-core gnupg
sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev
build-essential zip curl libncurses5-dev zlib1g-dev 

Ubuntu Linux (64-bit x86):
sudo
apt-get install git-core gnupg flex bison gperf build-essential zip
curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev
lib32readline5-dev lib32z-dev


 

下載jdk 1.5 :

apt-get install sun-java5-jdk

設定環境變數。
根據自己的java安裝,可以在.bashrc檔案中加入如下兩行:

gedit ~/.bashrc (開啟bashrc)

export JAVAHOME=/usr/lib/jvm/java-1.5.0-sun(根據自己機子的jdk安裝路徑,就是尋找到java、javac等的路徑)
export PATH=$PATH:$JAVAHOME/bin:$JAVAHOME/jre/bin:$JAVAHOME/bin/lib
export CLASSPATH=.:$JAVAHOME/jre/bin:$JAVA_HOME/lib

 

二.代碼下載

在使用者目錄下,建立一個存放Andorid目錄,在裡面建個bin目錄。
1、Install Git and Repo tools 用於版本管理和代碼同步
    sudo apt-get install git-core curl
    mkdir sourcecode 

    cd      sourcecode
    mkdir bin
    cd bin
    curl
http://android.git.kernel.org/repo

> repo
    sudo chmod a+x repo  (擷取repo許可權)

    可以為repo命令修改環境變數,在.bashrc檔案中加入如下:
    export PATH=$PTAH:~/bin/ (千萬別漏了“~”,把路徑覆蓋,一些命令會丟了,可選項)

2、Download source of android;
    在Android目錄下建立一個源碼的儲存目錄,androidsrc。

     mkdir androidsrc

      cd fandroidsrc

     ../bin/repo init -u git://android.git.kernel.org/platform/manifest.git(預設master版本,此版本是開發測試用的,不穩定)

     或者擷取cupcake 分支

     ../bin/repo init -u git://android.git.kernel.org/platform/manifest.git  –b cupcake

     (如果上面設定PATH的環境變數,直接使用repo init -u git://android.git.kernel.org/platform/manifest.git)
     進行設定完成後,開始同步代碼(根據網路大概需要數小時或數日);

    ../bin/repo sync
    (如果上面設定PATH的環境變數,直接使用repo sync)

三.系統和開發工具編譯

   Android檔案系統由於已經內建了經過最佳化的交叉編譯工具,並且為所有的源碼都提供了經過驗證的makefile,所以系統的整體編譯相對簡單,官方發布的版本中準系統都已經包含進了makefile中。如果需要增加什麼功能,可以到build/target/product/修改相應的.mk檔案。例如

為了增加中文的IME,可以按下面的方法做:

    #cd /home/myandroid/androidsrc/build/target/product/
    #gedit generic.mk
    開啟這個檔案後,在PRODUCT_PACKAGES中,加入PinyinIME,然後儲存退出。這樣在整體編譯的時候就會把中文IME也編譯進system中了。

  開始系統編譯:

    #cd /home/myandroid/androidsrc/

    #make
    第一次進行整體編譯,這個過程大概持續2到3小時,預設情況下,會在/home/myandroid/androidsrc目錄下產生一個out檔案夾,所有的編譯產生物都在這一目錄下。如果想更改組建檔案的目錄,請參考./build/buildspec.mk.default檔案中的說明和選項,很簡單,相信大家都能看懂。這次編譯所產生的主要是out/target/product/generic/下的一些物件,如system.img等

2.開發工具的編譯
    Android提供了完整的開發工具和交叉編譯工具,這些都包含在了源碼內,所以只要對源碼正確編譯,就可以獲得豐富的開發工具,並且Android的移植工作也需要這些工具的支援。
    編譯Android開發工具的步奏如下:
    #cd /home/myandroid/androidsrc/
    #make sdk

  這次編譯主要產生物件在out/host/下

#cd /out/host/linux-x86/sdk/
    可以看到這裡有了一個名叫android-sdk_eng.root_linux-x86的檔案夾,這個檔案夾基本包含了Android的模擬器      和所有的開發調試工具。開啟這個檔案夾,可以看到這裡主要由以下幾部分組成:
    –add-ones –需要增加的新工具路徑
    –docs –關於模擬器和各種開發工具的說明等
    –platform –模擬器和開發工具需要的檔案
    –tools –模擬器和開發工具的應用程式

  四.模擬器使用

      進入~/android-sdk_eng.root_linux-x86/tools目錄下,這裡有很多Android的工具,其中模擬器對應的應用程式是emulator。下面是正確使用模擬器的步奏:
    #./android create avd –n NO1 –t 1
    這個命令會進入建立avd的過程,按自己的需要做出一些選擇後,名稱為NO1的avd就建立成功了,以後可以通過這 個建立的avd來使用模擬器。1.4之前的版本不需要這樣建立,1.5版本後不正確建立是無法使用的。avd是android virtual machine的縮寫。

    #./android list avd
    輸入命令來檢查建立是否成功,如果成功會列出來。
    #./emulator –avd NO1
    啟動剛才建立的名為NO1的模擬器,使用的核心,檔案系統等均使用預設的,即~/android-sdk_eng.root_linux- x86/platform/路徑下的核心和檔案系統。沒什麼問題的話,我們就可以看到Android作業系統的虛擬介面了。

   五. 檔案系統提取

     Android可以運行在開發板上的檔案系統的提取需要依靠模擬器,具體的操作步奏如下:

1. 將模擬器運行在一個帶SDcard的虛擬設備上
    #cd /home/myandroid/androidsrc/out/ android-sdk_eng.root_linux-x86/tools/
    #./mksdcard –l 200M /home/sdcard.img
    這裡使用mksdcard開放工具在/home目錄下建立一個200M的sdcard.img,用於模擬器中資料和外部資料的互動,虛擬SD卡的大小不應該小於100M,否則在後期的檔案系統打包過程中,有可能會有SD卡儲存空間不夠的問題。

    #./android create avd –n cupcake –t –c /home/sdcard.img 1
    建立一個名為cupcake的,附帶有sdcard的虛擬設備。

    #./emulator –avd cupcake –sysdir /home/myandroid/androidsrc/out/target/product/generic   –data  /home/myandroid/androidsrc/out/target/product/generic/userdata.img -ramdisk  /home/myandroid/androidsrc/out/target/product/generic/ramdisk.img –kernel /home/myandroid/androidsrc/prebuild/android-arm/kernel/kernel-qemu
    使用名為cupcake的虛擬設備啟動模擬器,並規定系統,資料等的映象檔案路徑,模擬器核心採用prebuild/android-arm/kernel/kernel-qemu。當然也可以使用自己編譯的核心鏡像。

2. 使用工具從啟動並執行模擬器中擷取檔案系統,並放到sdcard中

    開啟一個新的終端進行操作:
    #cd /home/myandroid/androidsrc/out/ android-sdk_eng.root_linux-x86/tools/
    #./adb remount
    這裡使用adb工具的remount選項來使模擬器中的system目錄許可權改為可讀寫。
    #./adb push tar /system/bin
    這裡使用adb工具的push指令將提前使用busybox做好的tar應用程式加入到模擬器的/system/bin目錄下。關於busybox的使用這裡不作介紹,可以自己看看網上的文章。

    #./adb shell
    這裡使用adb工具進入到模擬器的shell中。

    進入到Android模擬器的shell中操作如下:
    #tar cvf /sdcard/system.tar /system
    #tar cvf /sdcard/userdata.tar /data

    這裡使用前面加入到模擬器中的tar應用程式來對system和data目錄下所有內容進行打包,並儲存到sdcard裡。操作結束後,進入sdcard目錄下查看是否有了system.tar和userdata.tar檔案,如果有,則證明打包成功。         
    #exit
    退出shell,並關閉模擬器。

    #mount –o loop sdcard.img /mnt
    #cd /mnt

    這裡將虛擬SD卡掛載在/mnt目錄下,進入/mnt目錄後,就可以將system.tar和userdata.tar拷貝出來,檔案系統的提取完成。

經過測試,發現其實使用android提供的mkyaffsimage直接對/out/target/product/generic/system目錄進行打包,製作出system.img也完全可以使用,不過不知道userdata.img如何製作,希望有人可能指點。使用mkyaffs2image製作檔案系統映像時要注意的是一些設定檔的許可權問題,比如/system/usr/keylayout下的檔案許可權就有問題,需要修改,否則產生的映像在模擬器中載入後,鍵盤等無法正常使用。

 

編譯出錯情況:

frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in this scope的錯誤

解決辦法:下載gcc-4.3和g++-4.3apt-get install gcc-4.3 g++-4.3然後進入/usr/bincd /usr/bin建個軟串連ln -s gcc-4.3 gccln -s g++-4.3 g++

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.