android 系統級別開發環境搭建

http://android.git.kernel.org/

Git:分佈式的版本管理系統。

Windows上的Git程序   http://code.google.com/p/msysgit/downloads/list

克隆一個單獨的子項目:

git clone git://android.git.kernel.org/ + project path.


克隆整個項目,需要下載一個python腳本repo,然後運行:

curl http://android.git.kernel.org/repo > ./repo

chmod  a+x repo

mkdir myandroid

cd myandroid

repo init -ugit://android.git.kernel.org/platform/manifest.git

repo sync


今後需要更新就直接  repo sync就可以了。


截止目前,有將186個子項目,大小爲9.6G


簡述比較重要的子項目:

platform/build.git

build system編譯和配置所需要的腳本和工具。

platform/bootable/bootloader/legacy.git

bootloader 參考代碼

kernel/linux-2.6.git

內核源代碼

kernel/qemu.git

Android的模擬器是基於QEMU開發的,QEMU是一個有名的開源虛擬機項目(詳見http://bellard.org/qemu/),它可以提供一個虛擬的ARM移動設備。Android模擬器被命名爲goldfish。

out目錄是build輸出目錄,

由out/target和out/host組成。

Android源代碼併成功編譯後,

在out/target/product/generic目錄下,可以獲得三個鏡像文件:

•ramdisk.img啓動系統的ramdisk鏡像
•system.img初始化好的系統鏡像
•userdata.img初始化好的用戶數據分區鏡像

在out/host/linux-x86/bin目錄找到emulator工具。


platform/bionic.git 

Android並沒有採用glibc作爲C庫,而是採用了Google自己開發的Bionic Libc。它的官方Toolchain也是基於Bionic Libc而並非glibc的。這使得使用或移植其他Toolchain來用於Android要比較麻煩。其只使用於內核移植,因爲內核不需要C庫。

platform/prebuilt.git

交叉編譯工具鏈。

Notes:

與glibc相比,Bionic Libc有如下一些特點:

•採用BSD License,而不是glibc的GPL License;
•大小隻有大約200k,比glibc差不多小一半,且比glibc更快;
•實現了一個更小、更快的pthread;
•提供了一些Android所需要的重要函數,如”getprop”, “LOGI”等;
•不完全支持POSIX標準,比如C++ exceptions,wide chars等;
•不提供libthread_db 和 libm的實現

Android中所用的其他一些二進制工具也比較特殊:

•加載動態庫時使用的是<machine>/system/bin/linker而不是常用的/lib/ld.so;
•prelink工具不是常用的prelink而是apriori,其源代碼位於” /build/tools/apriori”
•strip工具也沒有采用常用的strip,即“prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin”目錄下的arm-eabi-strip,而是位於/out/host/linux-x86/bin/的soslim工具。

platform/dalvik.git

Dalvik  虛擬機源代碼。

platform/ndk.git  NDK

platform/sdk.git  SDK

platform/packages/apps/XXX

手機上自帶的應用程序的源碼



Android  用一個custom build system去產生二進制、文檔和工具。其基於GNU Make.

編譯之前最好用make–v 和 gcc  –v 查看其版本。 要求make 的版本大於3.80。

如果運行下面過程中,提示某個 tools沒裝,就需要安裝,比如bison   jre     jdk

如在ubuntu裏  #sudo aptitude install bison  

JDK 最好手動安裝。去oracle下二進制包,不要用gcj或者openjdk.

第一件事恐怕就是先執行. build/envsetup.sh,完成一些命令的初始化,這樣就會多出一系列的命令。 這些命令-也就是envsetup.sh中的函數

% cd $TOP

% . build/envsetup.sh                                   特別注意格式,是一個點後緊接空格。點命令就是source 命令

# pick a configuration using choosecombo

% choosecombo   #會讓你作一些選擇

% make -j4 PRODUCT-generic-user

如果需要編譯一個debug版本

% make -j4 PRODUCT-generic-eng

“m  clean”來清除你剛編譯產生的目標文件。

也可以通過”m clobber”來刪除所有目標編譯的輸出文件,也就相當於將整個/out目錄刪除。


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