內容來自
mr_raptor · 深刻淺出 - Android系統移植與平臺開發
芯客網 · PX2開發板Android編譯開發環境介紹
Fan凡 · Android編譯環境搭建
html
Android操做系統介紹 java
Android是Google公司於2007年11月發佈的一款很是優秀的智能移動平臺操做系統。Android系統最初由AndyRubin等人於2003年10月建立。Google於2005年8月17日收購Android並組建OHA①開放手機聯盟開發改良Android。Android系統是一個基於ApacheLicense②, GPL③軟件許可的開源手機操做系統,底層由Linux操做系統做爲內核,咱們能夠直接從Android的官方網站上下載最新的Android源碼和相關開發工具包。 python
Android官方首頁:http://www.android.com/
Android官方開發者首頁:http://developer.android.com/index.html
Android官方開源項目AOSP首頁:http://source.android.com/ linux
軟件架構 android
Android應用程序開發是基於Android架構提供的API和類庫編寫程序,這些應用程序是徹底的Java代碼程序,它們構建在Android系統提供的API之上。 程序員
Android 開發方式:開發Android應用程序能夠基於Google提供的Android SDK(Software Development Kit,軟件開發工具包),也能夠直接在Android源碼中進行編寫。 shell
1) Android SDK開發:它提供給程序員一種最快捷的開發方式,基於IDE開發環境和SDK套件,快速開發出標準的Android應用程序,可是,對於一些要修改框架代碼或基於自定義API的高級開發,這種方式難以勝任。
2) Android源碼開發:基於Android提供的源碼進行開發,能夠最大致現出開源的優點,讓用戶自定義個性的Android系統,開發出更高效、更不同凡響的應用程序,這種方式更適合於系統級開發,對程序員要求比較高。 ubuntu
Android源碼開發過程:
搭建開發環境:根據兩種開發方式的不一樣,搭建開發環境略有不一樣 下載Android源碼:得益於Android的開源特色,Android源碼中包含大量保貴的技術知識,咱們能夠在閱讀源碼過程當中更深刻的瞭解Android系統的奧祕,爲咱們 編寫更高效、更有特色的應用程序打下基礎,同時能展示給讀者一個更龐大系統的設計藍圖,爲系統設計師及項目經理提供參考價值。同時,Android的源碼 中提供的應用程序示例、設計模式、軟件架構爲咱們編寫大型應用程序提供經驗。 編譯Android源碼:經過編譯Android源碼,生成咱們開發環境及目標系統,爲咱們作系統底層開發、系統定製與優化作準備,經過分析編譯過程,讓咱們學習到大型工程的代碼管理與編譯原理。 設計模式
Android源碼開發環境搭建 緩存
谷歌官網關於源碼下載、編譯的地址: https://source.android.com/source/building.html 建議有能力的狀況下,配置以上述網址中包含的內容爲準。如下內容以px2開發板爲主要情形作考慮。
google推薦使用64位ubuntu系統,使用虛擬機或者雙系統均可以。若是在虛擬機中運行Linux,至少須要16G交換分區空間,30G或更多的磁盤空間來編譯Android。Android源碼大小接近8.5G,單次編譯須要約30G磁盤空間,完整編譯須要100G或者更多。因此不推薦使用虛擬機。
PS.Android的源碼開發能夠在MacOS上或Ubuntu系統上,目前不支持在Windows下進行源碼開發。
px2開發板推薦使用ubuntu
Ubuntu 12.04系統,安裝完後,能夠查看以下版本信息: $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 12.04.3 LTS Release: 12.04 Codename: preciseubuntu下載, 網易開源鏡像站: http://mirrors.163.com/ubuntu-releases/
爲了可以正確下載和編譯Android源碼,還須要安裝如下程序包:
從Oracle官網去下載jdk:
http://www.oracle.com/java ->Downloads->Java for developers->Download Java SE 6 Update 45.(jdk-6u45-linux-x64.bin)
這裏推薦使用1.6.0_45版本的JDK 使用以下命令安裝jdk:
$ mv jdk-6u45-linux-x64.bin /user/local $ chmod a+x jdk-6u45-linux-x64.bin $ ./jdk-6u45-linux-x64.bin
安裝完JDK後,將jdk路徑加入到系統環境變量/etc/profile中:
JAVA_HOME=/usr/local/jdk1.6.0_45/ CLASSPATH=.:$JAVA_HOME/lib/tools.jar PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
保存以後,能夠source /etc/profile,而後查看jdk版本:
java -version系統編譯步驟:
1,初始化系統編譯環境
使用以下命令: $ source build/envsetup.sh 或 $ . build/envsetup.sh2,編譯代碼
直接在工程根目錄下執行make便可,可用-j參數指定多線程編譯,加快編譯速度。(下面-j4表示用四個線程編譯)
先編譯產品kernel,見以下命令:
$ cd kernel $ make rkpx2_4.4_lcd_defconfig //支持屏幕的內核鏡像 $ make kernel.img若是要編譯帶VGA功能的內核鏡像,請配置
$ make rkpx2_4.4_vga_defconfig在kernel/目錄下生成kernel.img 上面的兩個defconfig文件能夠經過make help命令查看
而後編譯android:
$ cd ../ $ make -j43,生成固件
編譯完成後,可執行mkimage.sh腳本生成固件。
$ ./mkimage.sh固件生成目錄:rockdev/Image-rkpx2/,生成
boot.img ,misc.img,recovery.img,system.img
4,uboot的編譯
在工程目錄下的
$ cd u-boot $ make distclean $ make rkpx2
在目錄下生成RKPX2Loader_miniall.bin和uboot.img
注意:配置ccache
ccache(compiler cache)是一個編譯器緩存,該工具會高速緩存編譯生成的信息,並在編譯的特定部分使用高速緩存的信息, 好比頭文件,這樣就節省了一般使用cpp解析這些信息所須要的時間。若是您編譯清單2中的文件,假定foobar.h中包含對其餘頭文件的引 用,ccache會用那個文件的 cpp-parsed版原本取代include聲明。ccache只是將最終的文本拷貝到文件中,使得它能夠當即被編譯,而不是真正去讀取、理解並解釋其內容。
這一步是可選的。可能會節省編譯時間。配置方法以下:
打開用戶目錄下的.bashrc,將下面語句添加到文件後面並保存退出:
exportUSE_CCACHE=默認狀況下cache會保存在~/.ccache目錄下,若是主目錄位於NFS或其餘非本地文件系統上,也要將下面語句添加到.bashrc中,以後保存並退出:
export CCACHE_DIR=<path-to-your-cache-directory>推薦的cache目錄大小爲50-100GB,在命令行執行如下命令:
prebuilt/linux-x86/ccache/ccache-M 50G該設置會保存到CCACHE_DIR中,且該命令是長效的,不會因系統重啓而失效。