Android N Preview を Nexus 5 向けにビルドした
Android N Previewやったーー!
Nexus 5対象外じゃないすかー!
- やだーー!!
おや、こんなところ に
hammerhead向けのandroid-n-preview-1ブランチがあるじゃないですか- ビルドしよう(錯乱)
- AOSPのビルドやったこと無い
- でもカスタムROMは毎日のようにビルドしてるし、まあどうにかなるでしょ
- ビルドしよう(錯乱)
当ブログではTerminalにおけるプロンプトを表記していないので工程は行ごとにコピペでも問題ないです
- あと作業は最新の状態である Ubuntu Server 14.04 LTS で行いました
環境構築
パッケージ
- わたしの手元では既にMarshmallowをビルドする環境が整ってたので参考にならない…
- 列挙しても余計なもの含まれそうなのでここでは省略します
- Establishing a Build Environment | Android Open Source Project 参照でお願いします
OpenJDK
- Android Nからは OpenJDK 8 が必要です。
build/core/main.mkとか書き換えて回避しようとしましたが結局開始直後にビルドがコケました。
sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get update && sudo apt-get install openjdk-8-jdkリポジトリの取得
- ここはAndroidのビルドしたことある人は飛ばして問題ない工程です。リポジトリの取得に使う
repoのセットアップです
mkdir ~/bincurl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repoPATH=~/bin:$PATHgit configも済ませておいてください。- ここからリポジトリの取得。
repo syncのjオプションはお使いの回線の速度とかに応じて変更してください。- 100M以上出るなら8で問題ないです。
- わかるとは思いますがこの先ずっと
aosp-nディレクトリで作業します
mkdir -p aosp-ncd aosp-nrepo init -u https://android.googlesource.com/platform/manifest -b android-n-preview-1repo sync -j8- vendor周りが無いので、
device/lge/hammerhead/proprietary-blobs.txtに記載されたファイルを実機かFactory Imageなどから取り出してvendor/lge/hammerhead以下にいい感じに用意しましょう。- Factory Imageをダウンロードしていい感じに取り出して配置するスクリプトを用意したのでお使いください
- スクリプトを実行する上で
simg2imgが必要なので用意します
- スクリプトを実行する上で
- Factory Imageをダウンロードしていい感じに取り出して配置するスクリプトを用意したのでお使いください
git clone https://github.com/anestisb/android-simg2img.gitcd android-simg2imgmakecp simg2img ~/bin/cd ..rm -rf android-simg2img- 展開するスクリプトは gist.github.com/lindwurm/90fc353413ed78c00b32 に置いてます。
cd device/lge/hammerheadwget -nc -q https://gist.githubusercontent.com/lindwurm/90fc353413ed78c00b32/raw/e605b7c891e293dccfb047cb3f6b596f06f08b9b/extract-files.shchmod +x extract-files.sh./extract-files.shcd ../../../ビルド
- おまじないでは無いけども。Javaはこっちで切り替えたほうが手軽な気がする。
- 特にわたしは普段Marshmallowのビルドで
java-7-openjdk-amd64のほう使ってるので。
- 特にわたしは普段Marshmallowのビルドで
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64export PATH=$PATH:$JAVA_HOME/binexport ANDROID_JAVA_HOME=$JAVA_HOMEenvsetupしてターゲットを指定。- 今回はNexus 5なのでコードネームは
hammerhead。user,userdebug,debug,testsとかありますが今回はuserdebugで。
- 今回はNexus 5なのでコードネームは
source build/envsetup.shlunch aosp_hammerhead-userdebug- ビルド。
makeのjオプションもスレッド数やメモリと相談してください。- コケた時に原因探るために、こんな感じでビルドしてログを残したほうが幸せになれる気がします(※1行です)
logtime=$(date '+%Y-%m-%d_%H-%M-%S') && make -j8 2>&1 | tee "aosp-n_${logtime}_hammerhead.log"実機に導入
- NexusなんだからみんなFactory Imageの焼き方くらい分かるよね!!!!!
- fastboot(bootloader)に入って以下を実行
- もちろん端末のデータが飛びます
fastboot devicesで接続を確認して
fastboot flash boot boot.imgfastboot flash cache cache.imgfastboot flash recovery recovery.imgfastboot flash system system.imgfastboot flash userdata userdata.imgfastboot reboot- ダメっぽい(Googleロゴが出たり電源が切れたりを繰り返す)場合は電源と音量-を長押ししてbootloaderに入り、
fastbootでFactory Imageでも焼いてからビルドし直すなり諦めるなりしましょう- わたしはこの手順でビルドは通りましたが起動しませんでした。
- title: Android N Preview を Nexus 5 向けにビルドした (起動できたとは言っていない)
- ビルド通るけど起動しないってのが一番悲しいよね!
- XDAで見た感じkernelでSELinuxのポリシーがセットされてないか何かで読めなくて起動しないらしいので様子見
- 「最悪N6からぶっこ抜いてportするしかねえな!」という声もある
- Android N Developer Previewではバックアップを除く複製、改変、追加、再配布、デコンパイル、リバースエンジニアリング、逆アセンブル、Previewを元にした派生物の作成等が ライセンス条項で禁止 されています
- 詳細は原文 License Agreement | Android Developers の3.4を参照のこと
- ライセンスは守りましょう
- Android N Developer Previewではバックアップを除く複製、改変、追加、再配布、デコンパイル、リバースエンジニアリング、逆アセンブル、Previewを元にした派生物の作成等が ライセンス条項で禁止 されています
- 「最悪N6からぶっこ抜いてportするしかねえな!」という声もある
- わたしはこの手順でビルドは通りましたが起動しませんでした。