2010-6-30 Android 2.2 has been merged to Android-x86 git repo
と書かれていたので, Android 2.2(froyo-x86)をビルドしAdobe Flash Playerを試してみようと思った. (Android 2.1まではFlash Playerをサポートしていない.)
しかし, ソースコードをダウンロードすると, Android 2.2のコードはマージされているようだが, すんなりとビルドできるような状態ではなかった.
ビルド時に指定するTARGET_PRODUCTのeeepcもまだ未対応のようだ. froyo-x86のビルドはmake整備されるまで, しばらく待つことに....
そこで, かわりにAndroid 2.1のeclair-x86をビルドしてみた.
途中何箇所がエラーが発生したので, 対応策をまとめておく.
1. ダウンロード[1]
ソースのダウンロードは, "Android-x86をビルドする"を参照し, repo initの際に"-b eclair-x86"と指定する.
$ mkdir Android2.1
$ cd Android2.1
$ repo init -u git://git.android-x86.org/platform/manifest.git -b eclair-x86
$ repo sync
今回ダウンロードしたのはandroid-x86 2.1 2010-07-05版.
2. ビルド[1][2]
ビルドも同様に行なうが, 途中でビルドエラーが発生する.
$ make iso_img TARGET_PRODUCT=eeepc
以下は, 各エラーの内容及び対応策である.
1) ./frameworks/base/tools/aapt
[エラーメッセージ]
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_set:system/core/libcutils/threads.c:36: error: undefined reference to 'pthread_key_create'
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_set:system/core/libcutils/threads.c:44: error: undefined reference to 'pthread_setspecific'
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_get:system/core/libcutils/threads.c:27: error: undefined reference to 'pthread_getspecific'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] エラー 1
[対応策]
./frameworks/base/tools/aapt/Android.mkを以下のように修正する.
--- Android.mk.orig 2010-07-05 01:25:32.467375850 -0700
+++ Android.mk 2010-07-06 22:12:31.395444091 -0700
@@ -40,7 +40,7 @@
LOCAL_LDLIBS := -lz
ifeq ($(HOST_OS),linux)
-LOCAL_LDLIBS += -lrt
+LOCAL_LDLIBS += -lrt -lpthread
endif
ifeq ($(HOST_OS),windows)
2) ./system/core/libacc/tests
[エラーメッセージ]
host C++: acc <= system/core/libacc/tests/main.cpp
host C++: libacc <= system/core/libacc/acc.cpp
host SharedLib: libacc (out/host/linux-x86/obj/lib/libacc.so)
host Executable: acc (out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/acc)
/usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/main.o: in function symbolLookup(void*, char const*):system/core/libacc/tests/main.cpp:41: error: undefined reference to 'dlsym'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/acc_intermediates/acc] エラー 1
[対応策]
./system/core/libacc/tests/Android.mkを以下のように修正する.
--- Android.mk.orig 2010-07-05 02:38:19.867174223 -0700
+++ Android.mk 2010-07-06 23:40:01.243471118 -0700
@@ -10,6 +10,7 @@
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
#LOCAL_MODULE_TAGS := tests
@@ -26,6 +27,7 @@
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_CFLAGS := -O0 -g
@@ -43,6 +45,7 @@
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_MODULE_TAGS := tests
@@ -58,6 +61,7 @@
LOCAL_SHARED_LIBRARIES :=
libacc
+LOCAL_LDLIBS := -ldl
LOCAL_CFLAGS := -O0 -g
3) ./frameworks/base/tools/localize
[エラーメッセージ]
host Executable: localize (out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize)
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_set:system/core/libcutils/threads.c:36: error: undefined reference to 'pthread_key_create'
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_set:system/core/libcutils/threads.c:44: error: undefined reference to 'pthread_setspecific'
/usr/bin/ld: out/host/linux-x86/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a(threads.o): in function thread_store_get:system/core/libcutils/threads.c:27: error: undefined reference to 'pthread_getspecific'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/localize_intermediates/localize] エラー 1
[対応策]
./frameworks/base/tools/localize/Android.mkを以下のように修正する.
--- Android.mk.orig 2010-07-05 03:04:17.632382213 -0700
+++ Android.mk 2010-07-06 23:45:15.679810624 -0700
@@ -34,7 +34,7 @@
libcutils
ifeq ($(HOST_OS),linux)
-LOCAL_LDLIBS += -lrt
+LOCAL_LDLIBS += -lrt -lpthread
endif
3. 起動[3]
"AndroidをVMPlayerにインストールする"を参考に, VMPlayer上にインストールしてみた.
特に問題もなく起動!!
-----
参照URL:
[1] Android-x86をビルドする
[2] https://review.source.android.com/#change,8435
[3] AndroidをVMPlayerにインストールする