非公開のGoogle Playベータ版にリリースしたアプリがあります。このまったく同じAPKをNexus 7に問題なくインストールできます
adb pm install
ただし、Google Playストアでは、これとまったく同じNexus7としてマークされています。
Your device isn't compatible with this version.
これはsame apkです。 Playストアで互換性がないと見なされている理由に関する情報を取得する方法がわかりません。
私のマニフェストは次のようになります:
<uses-sdk Android:minSdkVersion="10" />
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
<uses-permission Android:name="Android.permission.CAMERA"></uses-permission>
<uses-permission Android:name="Android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission Android:name="Android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission Android:name="Android.permission.WAKE_LOCK"></uses-permission>
<uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.GET_TASKS" />
<uses-feature Android:name="Android.hardware.camera" />
<uses-feature Android:name="Android.hardware.camera.autofocus" />
<application Android:icon="@drawable/icon" Android:label="@string/app_name">
<activity Android:name=".foobar"
Android:label="@string/app_name"
Android:screenOrientation="portrait">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service Android:name=".fooservice" Android:exported="false" Android:enabled="true" Android:label="@string/app_name" Android:icon="@drawable/icon">
</service>
</application>
Google Playが互換性がないと考える理由を判断する上で何か助けになりますか?
これはこの動作を完全に修正します。こちらの公式ドキュメント http://developer.Android.com/guide/topics/manifest/uses-feature-element.html を参照してください。
それは関連する部分です:
宣言された<uses-feature>
要素は情報提供のみを目的としています。つまり、Androidシステム自体は、アプリケーションをインストールする前に、デバイスでの機能サポートの一致をチェックしません。ただし、他のサービス(Google Playなど) )またはアプリケーションは、アプリケーションの処理または対話の一環として、アプリケーションの<uses-feature>
宣言を確認する場合があります。このため、アプリケーションが使用するすべての機能(下のリストから)を宣言することが非常に重要です。
したがって、adbを介してapkをインストールできるという事実は、特定のデバイスがフィルターで除外されるかどうかの証拠にはなりません。
また、ここをチェックしてください: http://developer.Android.com/guide/topics/manifest/uses-permission-element.html
場合によっては、リクエストする権限によって、Google Playによるアプリケーションのフィルタリング方法が影響を受けることがあります。
ハードウェア関連の許可(たとえば、カメラ)を要求すると、Google Playは、アプリケーションに基本的なハードウェア機能が必要であると想定し、それを提供しないデバイスからアプリケーションをフィルタリングします。
更新:Nexus 7 2012を使用していることを確認したので、次の公式ブログ投稿を参照してください: http:// Android-developers.blogspot.ch/2012/07/getting-your-app-ready-for-jelly-bean.html 。
Googleは、「Android.hardware.camera機能を必要とするアプリは、Nexus 7では利用できません」と述べています。
アプリでカメラを使用するために権限が必要な場合は、プログラムで行うことができます http://developer.Android.com/guide/topics/media/camera.html#detect-camera 。
これは私のアプリで数回起こりました。デバイスのユーザーが購入以来カメラを使用したことがない場合、カメラの要件がこのエラーの原因であることが判明しました。
カメラ要件を次の要件から外れるように変更します。
<uses-permission Android:name="Android.permission.CAMERA" />
<uses-feature Android:name="Android.hardware.camera" Android:required="false" />
<uses-feature Android:name="Android.hardware.camera.autofocus" Android:required="false" />
これは、不要な権限を与えると発生する可能性があります。
私の場合、私は許可を使用します
uses-feature Android:name = "com.sec.feature.spen_usp" Android:required = "true"
この権限を削除すると、問題なく機能します
Reto Meierからのリンク を読んだり、フォローしたりしてください。
これからのリンクで述べたように、アプリの機能を指定する必要があります。
基本的に簡単な解決策は、aaptダンプバッジ{your apk}を実行し、アプリが使用している機能を確認することです。次に、必須フィールドをfalseに設定して、アプリの使いやすさに影響を与えないものをマニフェストに追加します。 e.g. <uses-feature Android:name="Android.hardware.camera" Android:required="false" />
それで十分でしょう。