使用'android'命令行实用程序定位特定的系统映像版本?

时间:2013-05-28 19:32:54

标签: android macos scripting android-emulator

背景:我创建了一个无头OSX工作站引导脚本,它通过homebrew安装android-sdk并设置一个Chef-solo环境。我之所以提到这一点,是因为任何明智的工具/可预测命名的远程托管文件都在桌面上寻找解决方案。

我的问题: 我需要Android API 16系统映像,我似乎无法使用android CLI实用程序找到正确的标志/包命名空间。我能够使用android update sdk -u --filter android-16安装4.1.2 / API 16 SDK平台,但我仍然需要系统映像进行仿真。

android update sdk -u --filter system-image安装API 17 / 4.2.2。

我想避免在运行android list sdk时执行基于grep的解决方案,而不是它似乎是一个选项(android list sdk | grep 'API 16'没有结果)。

我查看了android CLI实用程序调用以枚举其包列表(http://dl-ssl.google.com/android/repository/sys-img/x86/sys-img.xml)的XML文件,并找到了我认为我想要的文件的链接{{3}但是,我对解析XML +并不熟悉现有的实用程序选项感到兴奋。

我见过http://dl-ssl.google.com/android/repository/sys-img/x86/sysimg_x86-16_r01.zip虽然它很有用,但它并没有完全涵盖我正在尝试做的事情。

我错过了标志或使用了错误的包名吗?如果是这样,我错过了哪些文档来源?我怎么能在将来为自己解决这个问题?

2 个答案:

答案 0 :(得分:7)

您现在可以使用单个包标识符。对于您的情况,其中一个:

echo y | android update sdk --no-ui --filter sys-img-x86-android-16 --all
echo y | android update sdk --no-ui --filter sys-img-armeabi-v7a-android-16 --all
echo y | android update sdk --no-ui --filter sys-img-mips-android-16 --all

--all是必要的,因为没有它,android会忽略它认为旧的包,即使它们与过滤器匹配。

您可以使用android list sdk --extended --all

找到标识符列表

答案 1 :(得分:2)

一个稍微有点讨厌的解决方案,但是这里是如何完成的 - 在运行CLI命令时命令。

获取Android API 16,4.1.2 SDK平台:

echo -ne 'y' | android update sdk -u --filter android-16

如果未安装API 17,请立即安装系统映像。从表面上看,这将遵循最新版本的SDK平台工具在框中做出响应:

echo -ne 'y' | android update sdk -u --filter system-image

如果您需要API 17,请安装android-17然后运行system-image install命令。