如何在 MAC 上启动 Android AOSP 模拟器

Posted

技术标签:

【中文标题】如何在 MAC 上启动 Android AOSP 模拟器【英文标题】:How to start Android AOSP emulator on MAC 【发布时间】:2013-04-04 05:16:35 【问题描述】:

我已按照 android 源网站 (http://source.android.com/source/building.html) 上的说明下载并编译了 Android 源代码

我选择了

$ lunch full-eng

一个仿真器工程构建,一切都编译得很好。

然后它说要在模拟器中启动图像,只需键入:

The emulator is added to your path automatically by the build process. To run the emulator, type

$ emulator

好吧,不确定它是否已添加到路径中。键入模拟器没有任何作用。

但是如果我去

out/host/darwin-x86/bin/emulator
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.

If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).

所以我很困惑......此时我必须创建一个 AVD 吗? 如何准确地为此图像创建 AVD?

有没有人在 MAC 上做过这个,他们可以给我一些说明吗?

谢谢

【问题讨论】:

我会在 google 群组上发布这个问题:groups.google.com/forum/?fromgroups#!forum/android-building 【参考方案1】:

我不确定在 osx 上是否有任何区别,但这是 Linux 上的常见错误。构建整个 AOSP 后,构建过程会将 &lt;AndroidBase&gt;/out/host/&lt;host-arch&gt;/bin/emulator 添加到 PATH 中,但是在重新启动计算机或打开另一个会话后,模拟器将不再位于路径中。

修复“您没有指定虚拟设备名称,系统 找不到目录”错误,您可以显式设置 ANDROID_PRODUCT_OUT 指向您的磁盘映像目录。通常,磁盘映像目录为&lt;AndroidBase&gt;/out/target/product/generic。所以

$export ANDROID_PRODUCT_OUT=<ANDROID BASEDIR>/out/target/product/generic/

会有帮助的。

其实可以跑

. build/envsetup.sh
setpaths

它会为你做类似的工作。

【讨论】:

嗨!是的,运行 envsetup 确实可以解决所有路径问题。然而主要问题是,当模拟器运行时,它需要一些参数来传递。否则你会得到:out/host/darwin-x86/bin/emulator emulator: ERROR: You didn't specify a virtual device name, and the system directory could not be found.如果您是 Android SDK 用户,请使用 '@' 或 '-avd ' 启动给定的虚拟设备(有关详细信息,请参阅 -help-avd)。 那么您是如何为您构建的模拟器创建 AVD 的? 一般情况下,您可以显式使用 emulator -system system.img -data userdata.img -ramdisk ramdisk.img 来启动模拟器,而无需创建任何 avd。如果您按照我的回答设置 ANDROID_PRODUCT_OUT,模拟器会自动找到这些图像,所以它应该可以正常工作。 @drlobo【参考方案2】:

我使用 aosp_x86_64-eng 构建并验证以下内容将在新的终端窗口中启动模拟器:

cd /[your AOSP WORKING_DIRECTORY]
source build/envsetup.sh
lunch aosp_x86_64-eng
cd $ANDROID_PRODUCT_OUT
emulator

【讨论】:

以上是关于如何在 MAC 上启动 Android AOSP 模拟器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AOSP 构建中设置默认启动器?

Android8.1源码编译实践(Mac)

AOSP源码分析:Android Input事件的产生读取和分发

如何将Android的AOSP仓库放置到自己的gitlab服务器上?

Android startActivity原理分析(基于Android 8.1 AOSP)

如何使用我自己的 .img 分区启动 android 模拟器?