Android 5.0をソースコードからビルド

提供: KiyomiWiki
移動: 案内検索

1.ビルド環境の準備

1.1 Ubuntu 14.04をVM環境で構築する。

 HDDの容量は、100GB以上必要で、出来れば200GB程度にしておきましょう。


1.2 ツールのインストール

 $ sudo apt-get update
 $ sudo apt-get install openjdk-7-jdk
 $ sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip gcc-multilib g++
 $ sudo apt-get install curl u-boot-tools vim


2.ソースコードのダウンロード

 $ curl https://storage.googleapis.com/git-repo-downloads/repo > repo
 $ chmod a+x repo
 $ sudo mv repo /usr/bin/.
 $ mkdir android5.1.1
 $ cd ~/android5.1.1
 $ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r1
 $ repo sync -j4


3.Androidのビルド

 $ cd ~/android5.1.1
 $ source build/envsetup.sh
 $ lunch
 ※ここで、hammerheadの番号を選択する。
 $ make -j4


4.カーネルのビルド(必要に応じて)

 $ cd ~/android5.1.1
 $ git clone https://android.googlesource.com/kernel/msm.git
 $ cd msm
 $ git branch -a でブランチリストを表示してそれっぽいカーネルをチェックアウトします。
 $ git checkout android-msm-mammerhead-3.4-lollipop-release
 $ export PATH=~/android5.1.1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin:$PATH
 $ export ARCH=arm
 $ export SUBARCH=arm
 $ export CROSS_COMPILE=arm-eabi-
 $ make hammerhead_defconfig
 $ make


5.Binaries for Nexus Devices

 ①https://developers.google.com/android/nexus/drivers?hl=ja のNexus5 Android 5.1.1(LM47D)を選択し,各Hardwareコンポーネントを~/android5.1.1フォルダにダウンロードします。
 ②各shellを実行します。(すると、/vendorフォルダにファイルが展開されます。)
   $ cd ~/android5.1.1
   $ ./extract-broadcom-hammerhead.sh
   $ ./extract-lge-hammerhead.sh
   $ ./extract-qcom-hammerhead.sh


6.不足しているファイルを元のイメージから抜き取ります。(デバッグだけなら不要?)

 ①devices/lge/hammerhead/proprietary-brobs.txtに記載しているファイルを実機からadb pullで吸い出します。
 ②吸い出したファイルを out/tartget/product/hammerhead/system/以下にディレクトリ構成を維持したままコピーします。
 ③Androidを再ビルドします。

7.ADB Deviceの登録 Google(NEXUS5)の場合

"/etc/udev/rules.d/51-android.rules" のファイルに次の行を記述します。
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="android"

idVenderは、Linuxに接続したAndroid端末のUSBのVender IDです。
GROUP="android"は、何でもよい。

8.Nexus5へイメージの書き込み

 各イメージは、out/tartget/product/hammerheadを書き込みます。
 $ fastboot oem unlock
 $ fastboot erase boot
 $ fastboot erase system
 $ fastboot erase userdata
 
 $ fastboot flash boot boot.img
 $ fastboot flash system system.img
 $ fastboot flash userdata userdata.img
 $ fastboot oem lock