安卓開發究竟是什麼

內容來自
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: precise
ubuntu下載,    網易開源鏡像站: http://mirrors.163.com/ubuntu-releases/ 
或者 搜狐開源鏡像站; http://mirrors.sohu.com

爲了可以正確下載和編譯Android源碼,還須要安裝如下程序包:

  • Python 2.6或更新版本,可從python.org網站下載安裝。Python是一個很是易學的面向對象的腳本語言,在Android的編譯過程當中會使用到該腳本解釋器。
  • GNU Make 3.81或更新,可從gnu.org網站下載安裝。Make工具用於管理和編譯大型的源碼項目,它經過Makefile來指定編譯規則。
  • Git 1.7或更新,Git是Linus Torvalds(也是Linux內核的編寫者)開發一個很是優秀的分佈式項目版本控制系統,用於大型項目的維護,如Linux內核源碼和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.sh
2,編譯代碼

直接在工程根目錄下執行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 -j4
3,生成固件

編譯完成後,可執行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中,且該命令是長效的,不會因系統重啓而失效。
相關文章
相關標籤/搜索