1. 程式人生 > >ubuntu16.04下編譯android-goldfish-3.4核心原始碼(android6.0.1系統原始碼)

ubuntu16.04下編譯android-goldfish-3.4核心原始碼(android6.0.1系統原始碼)

配置

筆者環境

系統: ubuntu 16.04 LTS
硬碟: 固態硬碟

筆者剛開始直接克隆的時候出現如下錯誤:

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected

所以將buffer配置增大
git config --global http.postBuffer 520000000

開始克隆

這裡使用的是國內的映象
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/goldfish.git

剛克隆完是沒有內容的,可以用如下命令看下分支,注意分支是
android-goldfish-3.4

,這個是android系統原始碼6.0.1的核心版本。

編譯原始碼

根目錄下配置指令碼build.sh,其中的PATH路徑替換成你本機的

export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-
export PATH=/media/byhook/Backup/Code/6.0.1_r74/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin:$PATH
make goldfish_armv7_defconfig
make -j4

開始編譯
bash build.sh

整個過程比編譯原始碼快多了,幾分鐘就可以了


可以看到最終生成的檔案:

編譯Android6.0.1原始碼

下載和編譯配置過程不多說,可以參看之前的文章,Android系統原始碼的下載與編譯
需要注意的是:
需要將art/build/Android.common_build.mk中的ART_HOST_CLANG改為false

ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)
# By default, host builds use clang for better warnings.
ART_HOST_CLANG := false


endif

開始編譯
make -j8

配置下相關的環境變數:

export PATH=$PATH:$android/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=$android/out/target/product/generic

注意其中的$android是你的android6.0.1的原始碼根目錄。
啟動模擬器:
source build/envsetup.sh
lunch 1
cd ~/Code/goldfish
emulator -kernel ./arch/arm/boot/zImage &
注意其中的路徑需要替換成你自己的,比如~/Code/goldfish這個就是存放android-3.4核心原始碼的目錄

可以看到紅色區域就是下午編譯的核心版本資訊。