源代码编译成功后,最后会有这样几行输出:
Generated: (out/target/product/generic/android-info.txt)
Installed file list: out/target/product/generic/installed-files.txt
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
接下来就可以在模拟器上运行看效果了。首先需要配置模拟器运行环境变量,如不配置则需在命令行中指定目录。
配置环境变量:
$ export ANDROID_PRODUCT_OUT=<Your Source Directory>/out/target/product/generic
运行模拟器:(当然也可以将模拟器所在目录添加到$PATH中)
$ out/host/darwin-x86/bin/emulator
接下来就出错了:-( 在我的机器上报出如下错误,模拟器闪了一下就退出了
emulator: WARNING: system partition size adjusted to match image file (135 MB > 66 MB)
2014-03-27 16:25:45.931 emulator-arm[15635:1107] Warning once: This application, or a library it uses, is using NSQuickDrawView, which has been deprecated. Apps should cease use of QuickDraw and move to Quartz.
qemu: fatal: Unhandled exception 0x0
R00=0000037f R01=00000000 R02=00001fa3 R03=003f3b18
R04=00000004 R05=00000000 R06=003f40ec R07=019bb600
R08=019c24e8 R09=bfffce80 R10=00000000 R11=00000000
R12=000c5dce R13=00000000 R14=00000000 R15=00000000
PSR=40000000 -Z-- A usr26
Abort trap: 6
Google上查找原因,最终在官网上看到这样一段话:
Emulator built on MacOS 10.7 Lion doesn't work.
Symptom: The emulator (any version) built on MacOS 10.7 Lion and/or on XCode 4.x doesn't start.
Cause: Some change in the development environment causes the emulator to be compiled in a way that prevents it from working.
Fix: Use an emulator binary from the SDK, which is built on MacOS 10.6 with XCode 3 and works on MacOS 10.7.
原来还是环境不同导致编译出的emulator程序不兼容10.7,所以无法运行。不过解决的办法也很简单,就是使用Android SDK自带的emulator程序代替编译出来的程序。然后在参数中指定使用编译出来的系统文件即可。最终执行下面的命令后终于见到了熟悉的Android界面。:-)
$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu-armv7 -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ./out/target/product/generic/ramdisk.img
PS: 在最终命令执行前原本使用的命令是
$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img
但是会遇到两个问题,一是模拟器长时间停在黑屏状态没反应,解决方法是按蓝色部分修改;二是系统报出一个qemu: could not load initrd 'ramdisk.img'的错误,解决方法按红色内容修改即可。
PS2: 有些地方提到用make sdk进行编译和打包,如运行该命令前需要先执行lunch sdk-eng(默认为full-eng),否则会编译出错。
参考链接:
https://groups.google.com/forum/#!msg/android-building/kePECtbvGlE/UGUFQHDPny0J