4

我们目前正在修改我们的应用程序清单,以显式使用该uses-feature属性来声明其对硬件和软件 API 的所有依赖关系。

由于我们希望用户拥有移动互联网,我们设置android.hardware.telephonytrue,但现在应用程序无法在模拟器上安装。错误信息是:

Failure [INSTALL_FAILED_MISSING_FEATURE]

没有其他信息,甚至在设备日志中也没有,但我可以通过反复试验找出电话功能导致它的原因。

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

实际上,我现在总体上对这个属性感到非常困惑,因为它的文档似乎暗示它只影响 Android Market 的过滤规则。我看不出它在哪里提到uses-feature对应用程序的可安装性有直接影响,这似乎超出了文档赋予它的仅仅是声明/信息的性质。

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

4

2 回答 2

0

基本上,您需要使用支持更多功能的更新的模拟器,或者您可以执行以下操作:

1.从您的 Manifest XML 文件中注释掉或删除以下行

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

或者

2.添加以下内容:

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

如果你做得对,你应该很高兴。

查看示例

于 2013-11-12T12:35:21.063 回答
-1

我有一个使用电话的应用程序,并且可以在 2.2 模拟器中正常工作,并且我认为您已经在清单中将 required 属性设置为 false:

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

如果是这种情况,我的猜测是您的清单中声明的​​另一个功能或权限在模拟器中不存在并导致错误。通过反复试验来追捕它。

于 2011-05-06T15:57:19.453 回答