4

現在、アプリケーション マニフェストを改訂して、uses-feature属性を明示的に使用してハードウェアおよびソフトウェア API へのすべての依存関係を宣言しています。

ユーザーがモバイル インターネットを使用していることを想定しているため、 に設定android.hardware.telephonyしましtrueたが、アプリはエミュレーターにインストールできません。エラーメッセージは次のとおりです。

Failure [INSTALL_FAILED_MISSING_FEATURE]

デバイスのログにも追加情報はありませんが、試行錯誤の結果、テレフォニー機能が原因であることがわかりました。

エミュレーターはテレフォニー機能をサポートしているため (通話のディスパッチをシミュレートすることもできます)、なぜこれが壊れるのですか? また、テレフォニーをサポートしていないと正しく報告されたとしても、それがuses-featureエミュレーターではなく実際のデバイスを対象としていたことは明らかではないでしょうか?

この属性については、Android マーケットのフィルタリング ルールにのみ影響することがドキュメンテーションで暗示されているように見えるため、一般的にこの属性についてはかなり混乱しています。アプリのインストール可能性に直接的な影響を与えることがどこに言及されているかわかりません。これはuses-feature、ドキュメントが属性とする単なる宣言/情報の性質をはるかに超えているようです。

結局のところ、それを使用するのは良い考えではないでしょうか?エミュレーターへのインストールが常に失敗するようになったため、ビルド サーバーは実行されなくなりました...

4

2 に答える 2

0

基本的に、より多くの機能がサポートされている最新のエミュレーターを使用するために必要なもの、または代わりに次のことを実行できます。

1.マニフェスト 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 エミュレーターで正常に動作するアプリがあり、マニフェストで必須属性を既に false に設定していると思います。

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

その場合、マニフェストで宣言された別の機能またはアクセス許可がエミュレーターに存在せず、エラーの原因になっていると思います。試行錯誤しながら追い詰める。

于 2011-05-06T15:57:19.453 に答える