Develop with pleasure!

福岡でCloudとかBlockchainとか。

Android on VMWare

Android 1.5(cupcake)からx86対応を進めているということで、ThinkPadVMWare上でも動作するだろうということで、VMWare上で動作するAndroidをビルドしてみた。

VMWare上で動作するAndroidのビルド方法はAndroidレポート - 話題の携帯向けOS「Android」をx86パソコンで動かしてみよう:ITproや日本Androidの会で公開されているPDFで分かりやすく説明されてる。

手順通りに進めるも、Androidのビルド時にコンパイルエラーが発生。まず最初が、

build/target/board/Android.mk:35: *** Please rename "vendor/asus/eee_701/Android.mk" to "vendor/asus/eee_701/AndroidBoard.mk".  

まぁ、ここは言われるとおり「Android.mk」を「AndroidBoard.mk」にリネームして解決。続いてこちら

Copy: out/target/product/eee_701/obj/lib/libdiskconfig.so -> out/ 
target/product/eee_701/installer/root/system/lib/libdiskconfig.so 
Copy:  -> 
dirname: missing operand 
Try `dirname --help' for more information. 
…

これについては、external/e2fsprogs/Android.mkというファイルがあるので、2行目のコメントアウトされているコードのコメントを除外してこのように

ifneq ($(TARGET_SIMULATOR),true)
 include $(call all-subdir-makefiles)
endif


とすると解決。続いてこちら

No rule to make target ‘vendor/google/frameworks/maps/com.google.android.maps.xml’

makeのターゲットが無いとか言われても…。ここは、/vendor/asus/eee_701/eee_701.mkに記載されている

generic_with_google.mk

generic.mk
に変更。

すると解決。一応これでAndroidのビルド自体は成功。後は引き続き、PDFに記載されているKernelのビルドへ。今度は、make bzImageする際に

drivers/misc/pmem.c:441: error: conflicting types for ‘phys_mem_access_prot’
include/asm/pgtable.h:300: error: previous declaration of ‘phys_mem_access_prot’ was here
drivers/misc/pmem.c: In function ‘flush_pmem_file’:
drivers/misc/pmem.c:804: error: implicit declaration of function ‘dmac_flush_range’
drivers/misc/pmem.c: In function ‘pmem_setup’:
drivers/misc/pmem.c:1264: error: implicit declaration of function ‘ioremap_cached’
drivers/misc/pmem.c:1265: 警告: assignment makes pointer from integer without a cast
make[2]: *** [drivers/misc/pmem.o] エラー 1
make[1]: *** [drivers/misc] エラー 2
make: *** [drivers] エラー 2

これについては、menuconfigの内容がNGだったので修正。

一応、カーネルのビルドも終わり、いざBootしてみるも、起動OSでAndroidを選択してもフリーズしたまま先に進まない…。

何故?

Androidは独自のlibcを使用しておりすべてのバイナリがこれにリンクされている。そのため,システム上にすでにlibcがある場合に問題が生じる。

ニュース - Canonicalの開発者,Ubuntu上でAndroidアプリを動かすことに成功:ITpro


この辺、関係あるんだろうか?