Android 1.5中引入了AVD(Android Virtual Device)。AVD是一个经过配置的模拟器。在创建AVD时可以配置的选项有:模拟器影像大小/触摸屏/轨迹球/摄像头/屏幕分辨率/键盘/GSM /GPS/Audio录放/SD卡支持/缓存区大小等
任何一个android应用都必须运行在一个AVD。如果没有制定或自动找到合适的AVD,报如下类似错误:
Failed to find an AVD compatible with target 'Android 1.1'. Launch aborted.
AVD必须指定target,target有类型,SDK1.5中目前有两种:platform,Add-on。Platform是android的平台target,add-on是android的插件target。
在创建AVD,选择target时要注意:
1)target的API level很重要,应用的API Level要<=AVD的Target的API Level,否则应用不能运行。应用的API level在AndroidManifest.xml中定义。
2)最好建立一个API level最大的AVD,测试你的应用的在高版本AVD之上的兼容性。
3)如果你的应用使用了add-on插件(在manifest中声明了user-library),那么要部署到的AVD的target需要指定为add-on类型。否则会报如下错误:
[2009-05-08 18:07:13 - apidemo_my] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2009-05-08 18:07:13 - apidemo_my] Please check logcat output for more details.
[2009-05-08 18:07:13 - apidemo_my] Launch canceled!
(如果某个应用使用了两个add-on插件,那该如何创建AVD呢?好像创建AVD时没有依附于多个target的选项?)
现在SDK1.5有三个target,Android 1.1,Android 1.5,Google APIs,可以预见,随SDK的升级及add-on的扩展,会有新的target增加进来。可以通过android list target查看系统中有哪些target。怎样添加新的target呢?没有看到说明,可能要定制SDK才可以做到吧。
通过Eclipse ADT运行应用时,ADT缺省会自动找合适AVD作为模拟环境运行apk。也可以不让ADT自动找,而手工指定,方法就是在Run Configurations中设置,任意指定一个系统中存在的AVD(AVD会自动列出所有的AVD供选择):
引入了AVD后,做兼容性测试就比较容易了。可以根据需要创建多个AVD,每个AVD代表一种机型/版本。