2012/10/22

Nexus7 用に Android をビルドしてみた (2)

穀風: Nexus7 用に Android をビルドしてみた (1) で環境構築が済んだので、次は Downloading the Source Tree | Android Open Sourceを参考にソースコードを取ってきます。

ダウンロード先は任意に決められますが、今回は ~/android_src というディレクトリにソースコードをダウンロードすることにしました。

また、Building for devices | Android Open Sourceによると、Nexus7 用のブランチは 「android-4.1.1_r4 or master」 と書かれています。
ただ、先日のアップデートで Nexus7 は Android 4.1.2 になってしまいました。
後ほど書きますが、ビルドに必要なバイナリも 4.1.2 用しか提供されていません。
とりあえず、今回は android-4.1.2_r1 を取ってくることにしました。(Nexus7 のデバイスネームは grouper って言うらしい)
2013/2/5 追記
現在の最新ブランチ(タグ)は android-4.2.1_r1.2 です。
Nexus 系はどんどん新しいバージョンが出るので、どのブランチを取って来るべきか悩みます。
基本的には提供されているバイナリ(下記)を見て決定すればよいでしょう。
指定できるブランチ(タグ)名は https://android.googlesource.com/platform/manifest にブラウザなどでアクセスするとわかります
$ mkdir ~/android_src
$ cd ~/android_src
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.1.2_r1
$ repo sync

結構長い時間がかかりますが、ソースコードの取得が終了するまで気長に待ちます。

その間に、Nexus7 の動作に必要なバイナリを取得しておきます。
Building for devices | Android Open Source によると、ICS 以降、オープンソースに出来ないハードウェアドライバのバイナリが必要であるとのこと。
それらを、Google's Nexus driver page からダウンロードしておく必要があるそうです。

ちなみに、2012/12/22 現在のスクリーンショットは以下です。
既に 4.1.2 のものしか提供されていませんので、これらをダウンロードしてきます。

ダウンロードしたファイルをソースツリーのルートに置きます。
今回は ~/android_src です。
tar ball を展開すると、シェルスクリプトが作成されますので、それらを実行します。
$ ls *.tgz
broadcom-grouper-jzo54k-26240daf.tgz    nvidia-grouper-jzo54k-56de148f.tgz
elan-grouper-jzo54k-c889b8f4.tgz        nxp-grouper-jzo54k-4bfb1fb6.tgz
invensense-grouper-jzo54k-aae1cd0c.tgz  widevine-grouper-jzo54k-aca0e725.tgz
$ for i in *.tgz
> do
> tar zxf $i
> done
$ for i in *.sh
> do 
> ./${i}
> done

この時、各スクリプトを実行すると、ライセンスに同意するよう求められます。

同意するには、Y や Yes ではなく、I ACCEPT と書かなければいけません。

全てうまく行くと、vendor というディレクトリに必要なファイルが展開されます。

過去のビルドがあって、バイナリを新規に追加した場合は、以下のコマンドを実行して残骸を消しておく必要があるようです。
$ make clobber

うまく行ったら、もとのファイルは削除してしまってかまいません。
rm *.tgz *.sh

穀風: Nexus7 用に Android をビルドしてみた (3)

0 件のコメント: