如何根据 AVD 管理器中的设备定义从命令行创建 AVD?

How can I create an AVD from the command line based on the device definitions in the AVD Manager?

在 AVD 管理器 gui 中,我看到了设备定义列表,这些使得使用给定设置配置设备变得容易。

当我使用 android list targets 时,我从设备定义中得到了一组不同的结果。

是否可以通过命令行访问设备定义列表?如果是这样,如何通过命令行构建基于一个的设备?

更新:

当您通过 avd gui 创建设备时,它会创建一个位于 /.android/name-of-your-phone/Config.ini 的配置文件 您可以使用 -prop 示例将您想要的设置选项添加到新设备:-prop hw.sdCard=yes -prop sdcard.size=200M,我 运行 带有 -verbose 标志的完整命令,您可以看到它启动的配置。令人恼火的是,选项不是用逗号分隔的,而是其他的。

最终为我工作的完整命令是:

$ANDROID_HOME/tools/emulator -avd phone -gpu on -memory 3072 -prop hw.sdCard=yes -prop sdcard.size=200M -prop disk.dataPartition.size=200M

您看到的(大概在 Android Studio 中)是预先打包在 IDE 中的。如果您通过右键单击应用程序文件并选择 "Show Package Contents":

查看 Android Studio 的应用程序文件(在 Mac 中)

应用程序 ▸ Android Studio.app ▸ 内容 ▸ 插件 ▸ android ▸ lib ▸ device-art-resources ▸ device-art.xml

您会看到类似这样的内容:

...
<device id="galaxy_nexus" name="Galaxy Nexus">
    <orientation name="port" size="1101,1709" screenPos="192,213" screenSize="720,1280" shadow="port_shadow.png" back="port_back.png" lights="port_fore.png"/>
    <orientation name="land" size="1847,886" screenPos="304,68" screenSize="1280,720" shadow="land_shadow.png" back="land_back.png" lights="land_fore.png"/>
</device>
<device id="nexus_s" name="Nexus S">
    <orientation name="port" size="719,1139" screenPos="119,160" screenSize="480,800" shadow="port_shadow.png" back="port_back.png" lights="port_fore.png"/>
    <orientation name="land" size="1210,586" screenPos="208,44" screenSize="800,480" shadow="land_shadow.png" back="land_back.png" lights="land_fore.png"/>
</device>
...

此外,我在 SDK 文件夹中找到 ConfigGenerator.java class,其中包含所有这些预先打包的设备配置和定义 Java。看一看,我想这就是您要找的东西。

android-sdks ▸ sources ▸ android-21 ▸ com ▸ android ▸ layoutlib ▸ bridge ▸ intensive ▸ setup ▸ ConfigGenerator.java

话虽如此,您可能无法直接访问此专有 avd 定义。但或许,您可以创建一个脚本并将此文件用作基线,以在其上构建并派生出您自己的解决方案。

希望对您有所帮助。