2010-12-06 130 views
4

我们目前正在修改我们的应用程序清单,以明确使用uses-feature属性来声明它在硬件和软件API上的所有依赖关系。android.hardware.telephony在模拟器上中断安装

由于我们预计用户有移动互联网,我们将android.hardware.telephony设置为true,但现在应用程序无法在模拟器上安装。该错误信息是:

Failure [INSTALL_FAILED_MISSING_FEATURE] 

没有更多的信息,甚至没有在设备日志,但我可以通过试错弄清楚,电话功能是导致它。

由于仿真器支持电话功能(您甚至可以模拟调用呼叫),为什么会中断?即使它正确地报告说它不支持电话,难道不应该很明显uses-feature是针对真实设备,而不是仿真器?

我现在对这个属性一般很困惑,因为its documentation似乎暗示它只影响Android电子市场的过滤规则。我看不到它在哪里提到uses-feature直接影响到应用程序的可安装性,这似乎超出了仅仅是声明性/信息性的docs属性。

也许这不是一个好主意,毕竟用它?我们的构建服务器不再执行,因为现在安装到模拟器现在总是失败...

+0

确切的错误信息是什么? – 2010-12-06 12:16:16

+0

对不起,添加了我们看到的错误信息。 – Matthias 2010-12-06 13:54:53

回答

0

我有一个应用程序,使用电话和2.2模拟器正常工作,我认为你已经设置必要的属性为false在您的清单:

<uses-feature android:name="android.hardware.telephony" android:required="false"/> 

如果是这样的话,我的猜测是,有另一功能或许可,您的清单中声明这是不存在的仿真器和导致错误。通过试验和错误追捕它。

0

基本上你需要使用更多的功能更近Emulater支持,或者你可以做以下内容:

1.Comment出来,或从清单XML文件中删除以下行

<!-- COMMENT ME --> 
<uses-feature android:name="android.hardware.telephony" /> 

OR

2.增加以下内容:

<!-- UNCOMMENT ME and add android:required="false" --> 
<uses-feature android:name="android.hardware.telephony" android:required="false"/> 

如果你做得对,你应该很好。

See Sample