Androidソースの取得とビルド

 ビルドのための準備が整ったら,実際にAndroidソースを取得してビルド作業を行います。まずはリポジトリを初期化して,Androidのソース群の取得を行います。

$ mkdir cupcake Enterキー
$ cd cupcake Enterキー
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake Enterキー
$ repo sync Enterキー

 今回,例として利用するEeePC701用のリポジトリ設定ファイルlocal_manifest.xmlを作成します。なお,このmanifestファイルは,Googleがたまたまx86パソコン向けの環境をEeePCと定義しているだけなので,ほかのx86パソコンでも基本的にこのままで問題ありません。

$ vi ./.repo/local_manifest.xml Enterキー

##以下の内容を入力して保存する##
<manifest>
<project name="platform/vendor/asus/eee_701" path="vendor/asus/eee_701"/>
</manifest>

再度リポジトリの同期を行い,EeePC701用のソースを取得します。

$ repo sync Enterキー

 現状のソース・コードには,電源管理インタフェースが無いと,入力イベントを受け付けなくなるというバグがあるので修正しておきます。

$ vi frameworks/base/services/java/com/android/server/PowerManagerService.java Enterキー

##344行目付近,PowerManagerServiceクラスのコンストラクタ内##

// assume nothing is on yet
mUserState = mPowerState = 0;

##上記を以下のように変更する##

// assume nothing is on yet
mUserState = mPowerState = SCREEN_BRIGHT;

 以上で準備が整ったので,Androidのビルドを行います。

$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img Enterキー

もし途中で以下のようなエラーが起きた場合は,dataディレクトリを手動で作成し,再度ビルドしてください。

system: ***** FILE SYSTEM WAS MODIFIED *****
system: 390/1080 files (1.8% non-contiguous), 345322/365332 blocks
Install system fs image: out/target/product/eee_701/system.img
Target userdata fs image: out/target/product/eee_701/userdata.img
du: cannot access `out/target/product/eee_701/data': No such file or directory
(以下略)
##上記のようなエラーが出たら,以下のようにコマンドを実行する##

$ mkdir out/target/product/eee_701/data
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img