cupcakeをx86で起動する

★20100820
x86用のAndroidを試し、W03用に変更する。(android.imgを作成し、LinuxLoaderから起動する)
 androidのバージョンは1.5(cupcake)
※まずはVM上で起動させてみる
リポジトリを初期化しソースを取得する。
$ mkdir cupcake
$ cd cupcake
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
$ repo sync

→EeePC701用のリポジトリ設定ファイルlocal_manifest.xmlを作成する。
 googlex86向けの環境をEeePCと定義しているだけなので問題ない。
$ vi ./.repo/local_manifest.xml

##以下の内容を入力して保存する##


→再度リポジトリの同期を行い,EeePC701用のソースを取得する。
$ repo sync

→電源管理インタフェースが無いと,入力イベントを受け付けなくなるというバグがあるので修正する。
$ 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;

→ビルド開始
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img

■以下のエラー発生
build/target/board/Android.mk:35: *** Please rename "vendor/asus/eee_701/Android.mk" to "vendor/asus/eee_701/AndroidBoard.mk". 中止.

→修正する
$ mv vendor/asus/eee_701/Android.mk vendor/asus/eee_701/AndroidBoard.mk

→ビルド再開

■以下のエラー発生
make: *** [out/target/product/eee_701/installer/ramdisk-installer.img] エラー 1

http://d.hatena.ne.jp/re_shikajiro/20090825/1251184028情報より以下の修正が必要

                                                                                        • -

external/e2fsprogs/Android.mk:

--- a/Android.mk

+++ b/Android.mk

@@ -1,3 +1,3 @@

ifneq ($(TARGET_SIMULATOR),true)

-# include $(call all-subdir-makefiles)

+ include $(call all-subdir-makefiles)

endif

                                                                                        • -

$ vim external/e2fsprogs/Android.mk

→ビルド再開

■以下のエラー発生
make: *** `out/target/product/eee_701/system/etc/permissions/com.google.android.maps.xml' に必要なターゲット `vendor/google/frameworks/maps/com.google.android.maps.xml' を make するルールがありません. 中止.

http://code.google.com/p/patch-hosting-for-android-x86-support/wiki/noruletomaketarget情報により以下の修正が必要

vendor/asus/eee_701/eee_701.mk, change 'generic_with_google.mk' to 'generic.mk' in the line

$ vi vendor/asus/eee_701/eee_701.mk

→修正後ビルド再開

■以下のエラー発生
make: *** ファイル `out/target/common/obj/JAVA_LIBRARIES/core-tests_intermediates/javalib.jar' を削除します

javaのバージョンが1.6のため1.5に設定し直す。

$ sudo update-alternatives --config java

→修正後ビルド再開
→エラーが消えなかったので、cleanを実行

$ make clean

→ビルド再開
→同エラー
http://www.mailinglistarchive.com/html/android-porting@googlegroups.com/2010-06/msg00202.html情報より

You can make the build continue if you remove all files in
libcore/dom/src/test/resources and libcore/xml/src/test/resources.

$ cd dalvik/libcore/dom/src/test/resouces
$ rm -rf *
$ cd dalvik/libcore/xml/src/test/resources
$ rm -rf *

→ビルド再開
→同エラー
http://d.hatena.ne.jp/dai5891/20100612/情報より

Delete duplicated files. Closes: #71

* libcore/support/src/test/resources/hyts_Foo.c 1 -
* libcore/xml/src/test/resources/hc_staff.xml 60 ------------------------------------------------------------
* libcore/xml/src/test/resources/staff.dtd 17 -----------------
* libcore/xml/src/test/resources/staff.xml 57 ---------------------------------------------------------
* libcore/xml/src/test/resources/staff2.dtd 24 ------------------------
* libcore/xml/src/test/resources/staff2.xml 13 -------------
* libcore/xml/src/test/resources/staffNS.dtd 45 ---------------------------------------------
* libcore/xml/src/test/resources/staffNS.xml 59 -----------------------------------------------------------
* libcore/xml/src/test/resources/xhtml1-strict.dtd 65 -----------------------------------------------------------------

$ cd dalvik/libcore/support/src/test/resources
$ rm -rf hyts_Foo.c

→やっと進んだ(javaのバージョンは1.5のまま)
→やっと終了!

■以下のエラーが発生した場合の対応
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] エラー 1

$ sudo apt-get install zlib1g-dev

カーネルをビルドしようとしたらカーネルソースコードがない
カーネルソースはデフォルトで取得できないようになっている(manifestが削除されている)
→local_manifest.xmlを使用して必要なコードを追加できる。
http://at-aka.blogspot.com/search/label/repo

→local_manifest.xmlに以下を追記