下載、編譯和測試Android源代碼linux
1.配置Android源代碼下載環境android
建立一個用於存放下載腳本文件(repo)的目錄:「mkdir ~/bin git
PATH=~/bin:$PATH」;算法
下載repo腳本文件:「curl 編程
https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo網絡
chmod a+x ~/bin/repo」;架構
建立用於存放Android源代碼的目錄:「mkdir android_source app
cd android_source」;框架
初始化:「repo init -u curl
https://android.googlesource.com/platform/manifest」;
開始下載Android源代碼:「repo sync」。
2.Android源代碼目錄結構
abi (ABI:applicationbinary interface,應用程序二進制接口)
bionic(bionic C庫)
bootable(啓動引導相關代碼)
build(存放系統編譯規則及generic等基礎開發配置包)
cts(兼容性測試套件標準)
dalvik(dalvik Java虛擬機)
development(應用程序開發相關)
device(設備相關代碼)
docs (介紹開源的相關文檔)
external(android使用的一些開源的模組)
frameworks(核心框架,Android SDK的源代碼)
hardware(主要是硬件適配層HAL代碼)
libcore(核心庫相關)
ndk (ndk相關代碼。AndroidNDK(Android NativeDevelopment Kit)
是一系列的開發工具,容許程序開發人員在Android應用程序中嵌
入C/C++語言編寫的非託管代碼。)
out(編譯完成後的代碼輸出與此目錄)
packages(應用程序包)
prebuilt(x86和arm架構下預編譯的一些資源)
sdk(sdk及模擬器)
system(文件系統、應用及組件——C語言)
Makefile
3.下載Android源代碼中的一部分
方法一:使用repo sync命令(在當前目錄生成一個隱藏目錄.Repo)
方法二:使用git clone命令
4.編譯Android源代碼
初始化編譯環境:「source build/envsetup.sh」或
「.build/envsetup.sh」;
選擇目標:使用lunch命令;
編譯Android源代碼:「make」;
5.out目錄結構
host:編譯過程當中須要的庫和工具;
target:common與product
6.將本身的APK做爲Android內置程序發佈
直接將apk文件複製到system/app目錄下,再從system目錄生成system.img文件。
7.用模擬器測試system.img文件
下載和編譯Linux內核源代碼
1.下載Linux內核源代碼
「git clone https://android.googlesource.com/kernel/common.git」下載最新Linux內核源代碼;「git branch -a」查看當前有哪些遠程版本庫;「git checkout --b 導出內容」可導出所需內容。
2.Linux內核源代碼目錄結構
arch:與CPU架構相關的源代碼和配置文件
block:部分塊設備驅動程序。
crypto:經常使用加密和散列算法,還有一些壓縮和CRC校驗算法。
Documentation:關於內核各部分的通用解釋和註釋。
drivers:設備驅動程序,每一個不一樣的驅動佔用一個子目錄。
firmware:一些驅動程序須要使用的設備固件的實現代碼。
fs:各類支持的文件系統,如ext、fat、ntfs等。
include:頭文件。其中,和系統相關的頭文件被放置在linux子目
錄下。
init:內核初始化代碼(注意不是系統引導代碼)。
ipc:進程間通訊的代碼。
kernel:內核的最核心部分,包括進程調度、定時器等,和平臺相
關的一部分代碼放在arch/*/kernel目錄下。
lib:庫文件代碼。
mm:內存管理代碼,和平臺相關的一部分代碼放在arch/*/mm目
錄下。
net:網絡相關代碼,實現了各類常見的網絡協議。
samples:一些內核編程範例。
scripts:用於配置內核文件的腳本文件。
security:主要是一個SELinux的模塊。
sound:經常使用音頻設備的驅動程序等。
tools:Linux自帶的工具的實現代碼。
usr:實現了一個cpio。
virt:內核虛擬機的實現代碼。
3.安裝Android內核的編譯環境
配置Linux內核源代碼根目錄下的Makefile文件,打開Makefile文件,找到ARCH和CROSS_COMPILE:「ARCH ?=arm CROSS_COMPILE?= arm-none-linux-gnueabi-」。
第一步:準備工做 第二步:解壓編譯器 第三步:驗證交叉編譯器是否安裝成功 第四步:安裝libncurses5
4.配置和編譯Linux內核
make clean:清除大多數由編譯生成的文件,但保留配置文件。
make mrproper:清除全部由編譯產生的文件,清除配置文件。
make distclean:make mrproper+刪除編輯器留下的備份文件和補丁
文件。
在Linux源代碼根目錄執行配置命令:「make config」(文本)「make menuconfig」(字符界面)「make oldconfig」(字符界面)「make xconfig」(圖形界面)。
成功編譯Linux內核後,會在<Linux內核源代碼根目錄>/arch/arm/boot目錄生成一個zImage文件,該文件就是Linux內核的二進制版本。