android.hardware.telephony中断了模拟器上的安装

时间:2010-12-06 12:08:33

标签: android android-emulator android-manifest uses-feature

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

由于我们希望用户拥有移动互联网,因此我们将android.hardware.telephony设置为true,但现在该应用无法在模拟器上安装。错误消息是:

Failure [INSTALL_FAILED_MISSING_FEATURE]

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

由于模拟器支持电话功能(您甚至可以模拟调度呼叫),为什么会中断?即使它正确地报告它不支持电话,uses-feature是否意味着针对真实设备,而不是仿真器?

我现在对这个属性感到非常困惑,因为its documentation似乎暗示它只会影响Android Market的过滤规则。我无法看到它提到的uses-feature对应用程序的可安装性有直接影响,这似乎超出了文档所属的仅仅是声明/信息性质。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

1.评论或删除Manifest 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