web-dev-qa-db-ja.com

アプリがGoogle Playのタブレットに表示されないのはなぜですか?

携帯電話とタブレット用のアプリをリリースしましたが、タブレット用のGoogle Playに表示されません。

Nexus 7とAsus eeeePadで確認済み

これは、マニフェストファイルにあるものです

<compatible-screens>
    <!--no small size screens -->

    <!--Only hdpi and xhdpi for normal size screens -->
    <screen Android:screenSize="normal" Android:screenDensity="mdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="hdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xhdpi" />

    <!-- all large size screens -->
    <screen Android:screenSize="large" Android:screenDensity="ldpi" />
    <screen Android:screenSize="large" Android:screenDensity="mdpi" />
    <screen Android:screenSize="large" Android:screenDensity="hdpi" />
    <screen Android:screenSize="large" Android:screenDensity="xhdpi" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />
</compatible-screens>

uses-sdkタグ

<uses-sdk Android:minSdkVersion="8" Android:targetSdkVersion="11" />

許可

<uses-permission Android:name="com.Android.vending.BILLING" />
<uses-permission Android:name="Android.permission.CAMERA" />
<uses-permission Android:name="Android.permission.VIBRATE" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission Android:name="Android.permission.READ_PHONE_STATE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.RECEIVE_SMS" />
<uses-permission Android:name="Android.permission.RECORD_AUDIO" />
<uses-permission Android:name="Android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission Android:name="Android.permission.READ_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_CONTACTS" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission Android:name="Android.permission.GET_ACCOUNTS" />
<uses-permission Android:name="Android.permission.BROADCAST_STICKY" />
<uses-permission Android:name="Android.permission.RECEIVE_BOOT_COMPLETED"/>
<permission Android:name="com.myapp.something.permission.C2D_MESSAGE" Android:protectionLevel="signature" />

Use-featureタグをfalseに明示的に追加した後、Asus eeeePadタブレットでは表示され始めましたが、まだnexus 7では表示されません。これが開発者コンソールに表示されるものです。

このアプリケーションは、アプリケーションマニフェストで定義されているこれらの機能を備えたデバイスでのみ使用できます。画面密度:LARGE,MDPI LARGE,HDPI LARGE,LDPI LARGE,XHDPI XLARGE,MDPI XLARGE,HDPI XLARGE,LDPI XLARGE,XHDPI NORMAL,MDPI NORMAL,HDPI NORMAL,XHDPI必要なデバイス機能

Android.hardware.screen.portrait
Android.hardware.touchscreen
38
Saqib

最後に<compatible-screens>タグを使用したNexus 7の特別なケースを追加しました。 Nexus 7にはtvdpi密度があるため

<compatible-screens>
    <!--no small size screens -->


    <!--all normal size screens -->
    <screen Android:screenSize="normal" Android:screenDensity="ldpi" />
    <screen Android:screenSize="normal" Android:screenDensity="mdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="hdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xhdpi" />

    <!-- all large size screens -->
    <screen Android:screenSize="large" Android:screenDensity="ldpi" />
    <screen Android:screenSize="large" Android:screenDensity="mdpi" />
    <screen Android:screenSize="large" Android:screenDensity="hdpi" />
    <screen Android:screenSize="large" Android:screenDensity="xhdpi" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />

    <!-- Special case for Nexus 7 -->
    <screen Android:screenSize="large" Android:screenDensity="213" />

</compatible-screens>

更新:

Xxhdpiデバイスの場合、int値として480を使用できます

     <screen Android:screenSize="normal" Android:screenDensity="480" />
     <screen Android:screenSize="large" Android:screenDensity="480" />
     <screen Android:screenSize="xlarge" Android:screenDensity="480" />`
40
Saqib

このページ は問題を特定します。

<uses-feature>の代わりに<uses-permission>を使用すると、アプリケーションはMarketによって除外されませんが、コードレベルでその機能をサポートしていないデバイスを処理することを期待します。

上記のページのアクセス許可のいずれについても、<uses-feature>要素でAndroid:required="false"属性を使用して暗黙的機能を明示的に宣言することにより、暗黙的機能に基づくフィルタリングを無効にできます。たとえば、CAMERA許可に基づくフィルタリングを無効にするには、次の宣言をマニフェストファイルに追加します。

<uses-feature Android:name="Android.hardware.camera" Android:required="false" />

ただし、<uses-permission>を指定すると、その機能にアクセスできないすべてのデバイスがフィルターされます。

35
Erol

鍵はあなたの許可にあると信じています。アプリでRECEIVE_SMSおよびREAD_PHONE_STATE Google Playはそれを使用して、アプリが動作するためにこれらの権限を使用する必要があると考えているため、これらのことを実行できないデバイス(タブレット)を除外します。 Android開発者サイト:

「これらのアプリが意図せずに利用可能になるのを防ぐため、Google Playでは、特定のハードウェア関連のアクセス許可が基になるハードウェア機能がデフォルトで必要であることを前提としています。 、Google Playは、権限の宣言が、基になるAndroid.hardware.bluetooth機能がアプリケーションに必要であることを意味すると想定し、その機能に基づいてフィルタリングを設定します。」

また、これを見てください:

テレフォニーCALL_PHONE Android.hardware.telephony CALL_PRIVILEGED Android.hardware.telephony MODIFY_PHONE_STATE Android.hardware.telephony PROCESS_OUTGOING_CALLS Android.hardware.telephony READ_SMS Android.hardware.telephony RECEIVE_SMSEND。 Android.hardware.telephony WRITE_APN_SETTINGS Android.hardware.telephony WRITE_SMS Android.hardware.telephony

あなたが持っている RECEIVE_SMSおよびREAD_PHONE_STATEしたがって、自動的にAndroid.hardware.telephony。あなたはこれを修正することができます

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

このすべてについて、より詳細に説明します ここ

19
ninge

Nexus 7で動作させるには、これら3つすべてを行う必要があります。apkをアップロードしたら、最初に新しいapkをアクティブにして、製品の詳細に移動し、サポートされているデバイスを検索して設定を確認できます。 Nexus 7が[マニフェスト設定によりサポートされていないデバイス]にない場合は問題ありません。

注:apkをアップロードすると、Google Playは213の密度をtvdpiに変換します。なぜEclipseマニフェストツールのオプションではないのかわかりません...

<compatible-screens>
    ....
    <screen Android:screenSize="large" Android:screenDensity="213" />
</compatible-screens>

<uses-feature Android:name="Android.hardware.camera" Android:required="false" />
<uses-feature Android:name="Android.hardware.telephony" Android:required="false" />
10
banachi

ドキュメントでは、使用を避けるよう指示されています

<compatible-screens>


参照 こちら
代わりに使用する必要があります

<supports-screens
        Android:anyDensity="true"
        Android:xlargeScreens="true"
        Android:largeScreens="true"
        Android:normalScreens="true"
        Android:smallScreens="true" />


このページで提供されるその他の回答の多くも効果的な回答です。自分で実装しました。みんな、ありがとう。

4
user2506891

developer.Android.com によると

アプリがマニフェストで<compatible-screens>要素を宣言する場合、要素にはタブレット画面のサイズと密度のすべての組み合わせを指定する属性を含める必要がありますアプリがサポートしていること。

可能な場合は、avoidを使用して、<compatible-screens>アプリの要素。


したがって、私は次のタスクを行い、

1-REMOVED <compatible-screens> from manifest

<compatible-screens>
    <!-- all small size screens -->
    <screen Android:screenSize="small" Android:screenDensity="ldpi" />
    <screen Android:screenSize="small" Android:screenDensity="mdpi" />
    <screen Android:screenSize="small" Android:screenDensity="hdpi" />
    <screen Android:screenSize="small" Android:screenDensity="xhdpi" />

    <!--all normal size screens -->
    <screen Android:screenSize="normal" Android:screenDensity="ldpi" />
    <screen Android:screenSize="normal" Android:screenDensity="mdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="hdpi" />
    <screen Android:screenSize="normal" Android:screenDensity="xhdpi" />

    <!-- all large size screens -->
    <screen Android:screenSize="large" Android:screenDensity="ldpi" />
    <screen Android:screenSize="large" Android:screenDensity="mdpi" />
    <screen Android:screenSize="large" Android:screenDensity="hdpi" />
    <screen Android:screenSize="large" Android:screenDensity="xhdpi" />

    <!-- all xlarge size screens -->
    <screen Android:screenSize="xlarge" Android:screenDensity="ldpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="mdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="hdpi" />
    <screen Android:screenSize="xlarge" Android:screenDensity="xhdpi" />

    <!-- Special case for Nexus 7 -->
    <screen Android:screenSize="large" Android:screenDensity="213" />

    <screen Android:screenSize="normal" Android:screenDensity="480" />
    <screen Android:screenSize="large" Android:screenDensity="480" />
    <screen Android:screenSize="xlarge" Android:screenDensity="480" />

</compatible-screens>

2-ADDED <supports-screens>マニフェストの属性

    <supports-screens
        Android:xlargeScreens="true"
        Android:largeScreens="true"
        Android:normalScreens="true"
        Android:smallScreens="true"
        Android:anyDensity="true"
    />

3-ADDED Android:required = "false"属性の<uses-feature>(私のアプリケーションによる)マニフェスト内の要件)

<uses-feature Android:name="Android.hardware.telephony" Android:required="false" />
<uses-feature Android:name="Android.hardware.bluetooth" Android:required="false"/>
<uses-feature Android:name="Android.hardware.location.gps" Android:required="false"/>
<uses-feature Android:name="Android.hardware.camera" Android:required="false"/>
<uses-feature Android:name="Android.hardware.nfc" Android:required="false"/>

公式Androidについてのドキュメント 機能要件を暗示する許可

Android:required falseの詳細な説明は ATTRIBUTES:Android:required false にあります。

機能に対してAndroid:required = "false"を宣言すると、アプリケーションはデバイス上に存在する場合はその機能を使用することを好みますが、指定された機能なしで機能するように設計されていることを意味します、必要に応じて(タブレットの場合はテレフォニー許可)。


上記の変更を行うことにより、

2000以上のデバイスがサポート対象に追加されましたAndroidデバイスリスト

2000+ devices added

それがお役に立てば幸いです

3
shanraisshan

この質問に答えることで助けが得られます。

作り方Androidタブレットで利用可能なPhonegap?

はい。問題は権限にありました。 AndroidManifest.xmlからすべての権限を削除してアプリをテストし、権限が欠落しているというエラーが発生した場合に権限を1つずつ追加します。現在、私のアプリはAndroid携帯電話とタブレットに対応しています。

0
Kirit Vaghela