AndroidをUbuntuにインストールするよ!
ThinkPadとvmwareにUbuntuを入れてAndroidをインストールするよ!
ここを見ながらやってるよ。
AndroidをVMware Fusion Ubuntu 9.04上で…
Android on x86(Eee PC)ベースポーティング手順書
repo syncまではすんなりいきました。
makeが大変だよ。
が、makeのところでこんなんなっちゃった。
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img ************************************************************ You are attempting to build with the incorrect version of java. Your version is: java version "1.6.0_12". The correct version is: 1.5. Please follow the machine setup instructions at http://source.android.com/download ************************************************************ build/core/main.mk:105: *** stop. Stop.
Javaのバージョンが合ってない?java5をデフォルトにすればいいのかな。ここもそんなこと言ってるし。
$ sudo apt-get install sun-java5-jdk flex
$ sudo update-java-alternatives -s java-1.5.0-sun
java-1.5.0いれてupdate-java-alternativesしたら動いたよ。
再度make。
$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true make installer_img ============================================ PLATFORM_VERSION_CODENAME=Donut PLATFORM_VERSION=Donut TARGET_PRODUCT=eee_701 TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_ARCH=x86 HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=Donut ============================================ build/core/main.mk:458: *** No TARGET_CPU_ABI defined by board config: . 中止.
ありゃ、だめだ・・・。TARGET_CPU_ABIを指定してやってみたよ。とりあえずnoneで。
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img ============================================ PLATFORM_VERSION_CODENAME=Donut PLATFORM_VERSION=Donut TARGET_PRODUCT=eee_701 TARGET_BUILD_VARIANT=eng TARGET_SIMULATOR= TARGET_BUILD_TYPE=release TARGET_ARCH=x86 HOST_ARCH=x86 HOST_OS=linux HOST_BUILD_TYPE=release BUILD_ID=Donut ============================================ 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
再度実行。
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img 〜省略〜 Notice file: external/skia/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libsgl.so.txt Notice file: external/freetype/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libft2.a.txt Notice file: external/libpng/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libpng.a.txt Notice file: external/giflib/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libgif.a.txt Notice file: external/jpeg/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libjpeg.a.txt Notice file: frameworks/base/media/libmedia/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libmedia.so.txt make: *** `out/target/product/eee_701/obj/EXECUTABLES/applypatch_intermediates/LINKED/applypatch' に必要なターゲット `out/target/product/eee_701/obj/STATIC_LIBRARIES/libmtdutils_intermediates/libmtdutils.a' を make するルールがありません. 中止. make: *** 未完了のジョブを待っています....
なんだこれは・・・。MLで解決策発見。
3. applypatch depends on libmtdutils.a, which doesn't exsit on x86. so maybe
can disable it.
project build/
diff --git a/tools/applypatch/Android.mk b/tools/applypatch/Android.mk
index fe317ff..8f494b6 100644
--- a/tools/applypatch/Android.mk
+++ b/tools/applypatch/Android.mk
@@ -14,6 +14,7 @@ifneq ($(TARGET_SIMULATOR),true)
+ifeq ($(TARGET_ARCH),arm)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)@@ -48,4 +49,5 @@ LOCAL_STATIC_LIBRARIES += libz
include $(BUILD_HOST_EXECUTABLE)
+endif # TARGET_ARCH == arm
endif # !TARGET_SIMULATOR
言われるがままにソースコードを修正しちゃうよ。
$vim build/tools/applypatch/Android.mk b/tools/applypatch/Android.mk 〜省略〜 ifneq ($(TARGET_SIMULATOR),true) ifeq ($(TARGET_ARCH),arm) <追記> 〜省略〜 endif # TARGET_ARCH == arm<追記> endif # !TARGET_SIMULATOR 〜省略〜
いった!と思ったら、googlemapのルールがないとか言われて止まった。
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img 〜省略〜 <stdout>: In function 'yy_get_next_buffer': <stdout>:3686: warning: comparison between signed and unsigned Notice file: external/tcpdump/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/xbin/tcpdump.txt Notice file: external/libpcap/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/lib/libpcap.a.txt target thumb C++: timeinfo <= system/extras/timeinfo/timeinfo.cpp Notice file: system/extras/timeinfo/NOTICE -- out/target/product/eee_701/obj/NOTICE_FILES/src//system/xbin/timeinfo.txt make: *** `out/target/product/eee_701/system/etc/permissions/com.google.android.maps.xml' に必要なターゲット `vendor/google/frameworks/maps/com.google.android.maps.xml' を make するルールがありません. 中止. make: *** 未完了のジョブを待っています....
My wonderful livingさんのところで解決済み!
$ vi vendor/asus/eee_701/eee_701.mk #$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_with_google.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/generic.mk)
まだ終わらない・・・
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img 〜省略〜 host SharedLib: libSR_Recognizer (out/host/linux-x86/obj/lib/libSR_Recognizer.so) Install: out/host/linux-x86/bin/dx target asm: libicudata-us <= out/target/product/eee_701/obj/SHARED_LIBRARIES/libicudata-us_intermediates/icu_data_us.S target SharedLib: libc_debug (out/target/product/eee_701/obj/SHARED_LIBRARIES/libc_debug_intermediates/LINKED/libc_debug.so) out/target/product/eee_701/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(getservent.o): In function `getservent_r': bionic/libc/netbsd/net/getservent.c:102: undefined reference to `htons' collect2: ld returned 1 exit status make: *** [out/target/product/eee_701/obj/SHARED_LIBRARIES/libc_debug_intermediates/LINKED/libc_debug.so] エラー 1 make: *** 未完了のジョブを待っています....
パスが通ってなくてhtonsが動いてない?includeを追加しよう。
$vim bionic/libc/netbsd/net/getservent.c #include <arpa/inet.h>
ま、まだなのか・・・
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img 〜省略〜 Copy: -> dirname: missing operand 詳しくは `dirname --help' を実行して下さい. mkdir: missing operand 詳しくは `mkdir --help' を実行して下さい. cp: missing file operand 詳しくは `cp --help' を実行して下さい. make: *** [out/target/product/eee_701/installer/ramdisk-installer.img] エラー 1
MLによるとシェルを直せばいいらしい。
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 -# include $(call all-subdir-makefiles) + include $(call all-subdir-makefiles)
android@ubuntu-vm:~/x86_bin/mydroid$ TARGET_ARCH=x86 TARGET_PRODUCT=eee_701 DISABLE_DEXPREOPT=true TARGET_CPU_ABI=none make -j2 installer_img 〜省略〜 --- Finished installer data image -[ out/target/product/eee_701/installer/installer_data.img ]- Creating bootable installer image: out/target/product/eee_701/installer.img Updated inst_boot length to be 4468KB Updated inst_data length to be 452736KB I/diskconfig(19587): Requesting operation on a regular file, not block device. I/config_mbr(19587): Configuring pentry. status=0x80 type=0x83 start_lba=2048 len_lba=8936 I/config_mbr(19587): Configuring pentry. status=0x0 type=0x83 start_lba=10984 len_lba=905472 I/config_mbr(19587): Configuring pentry. status=0x0 type=0x0 start_lba=0 len_lba=0 I/config_mbr(19587): Configuring pentry. status=0x0 type=0x0 start_lba=0 len_lba=0 Copying images to specified partition offsets I/diskutils(19587): Writing RAW image 'out/target/product/eee_701/installer/installer_tmp.img' to 'out/target/product/eee_701/installer.img' (offset=1048576) I/diskutils(19587): Wrote 4575232 bytes to out/target/product/eee_701/installer.img @ 1048576 I/diskutils(19587): Writing RAW image 'out/target/product/eee_701/installer/installer_data.img' to 'out/target/product/eee_701/installer.img' (offset=5623808) I/diskutils(19587): Wrote 463601664 bytes to out/target/product/eee_701/installer.img @ 5623808 File edit complete. Wrote 2 images. Done with bootable installer image -[ out/target/product/eee_701/installer.img ]-
できたーー!!!
次はこれをUSBメモリに入れて、起動できるようにするよ!