最近在探索安卓源碼跟ROM,有幸買了本書跟在網上看到一些交教程,先做一些筆記,以備不時之需...
1、了解git和repo
2、環境配置
首先最先的肯定是JDK和SDK的安裝,網上教程很多,也可以參考Google官方提供的: https://source.android.com/source/initializing.html
(a)安裝git 和curl:
apt-get install git-core curl
(b)安裝repo:
建立存放repo目錄
# mkdir ~/bin
# export PATH=~/bin:$PATH
# curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo (也可以在網上下載下傳現成的)
# chmod a+x ~/bin/repo
3、下載下傳安卓源碼
下載下傳Android源碼:
# mkdir ~/source
# cd source
# repo init -u https://android.googlesource.com/platform/manifest -b android-4.2.2_r1 (同步指定分支,可git branch -a檢視)
# repo sync
編譯安卓源碼:
# source build/envsetup.sh
# lunch full-eng (編譯生成可在安卓模拟器上運作,也可以隻輸lunch 顯示目前支援的所有裝置,例如:full_x86-eng适合在X86架構的計算機運作)
# make -j4 (4個線程編譯)
生成的檔案在:~/source/out/target/product/generic 下包括鏡像檔案(ramdisk.img、system.img、userdata.img)
Google官方源碼編譯細節可在 https://source.android.com/source/building.html 了解
4、下載下傳安卓官方Linux核心源碼
git指令
# git clone http://android.googlesource.com/kernel/common.git
# git clone http://android.googlesource.com/kernel/exynos.git
# git clone http://android.googlesource.com/kernel/goldfish.git
# git clone http://android.googlesource.com/kernel/msm.git
# git clone http://android.googlesource.com/kernel/omap.git
# git clone http://android.googlesource.com/kernel/samsung.git
# git clone http://android.googlesource.com/kernel/tegra.git
其中
common:通用的Linux核心,後面6套都是以該源碼為基礎;
exynos :用于使用三星Exynos晶片的Android裝置,典型代表是Nexus 10;
goldfish:用于Android模拟器的核心源碼;
msm :用于使用高通MSM晶片的Android裝置,典型代表是ADP1(G1)、ADP2(G2)、Nexus One和Nexus 4;
omap :用于使用德州儀器(TI)OMAP晶片Android裝置,典型代表是PandaBoard和Galaxy Nexus;
samsung:用于使用三星Hummingbird晶片的Android裝置,典型代表是Nexus S;
tefra :用于使用NVIDIA (Tefra)晶片Android裝置,典型代表是Xoom和Nexus 7。
HTC手機的話,也可以在以下位址下載下傳指定裝置的Linux核心源碼:
http://www.htcdev.com/devcenter/downloads
檢視核心分支:
# cd common
# git branch -a
切換分支:
# git checkout remotes/origin/xxxxxxxxx
5、編譯核心源碼
要想編譯适合在Android裝置上運作的核心源碼,必須要安裝支援arm架構的交叉編譯器,但是每個裝置官方編譯使用的版本不一樣,必須考慮。
Nexus 7裝置用的是交叉編譯器4.4.3,可參考下面的指令:
# git clone https://android.googlesource.com/platform/prebuilt
# export PATH=$(pwd)/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
# export ARCH=arm
# export CROSS_COMPILE=arm-eabi-
# make
最後在<Linux源碼根目錄>/arch/arm/boot 目錄生成一個zImage檔案,是可運作的Linux核心的二進制版本(Nexus 7)。
(也可以參考http://android.git.kernel.org/)
轉載于:https://www.cnblogs.com/zeham/p/4231985.html