39

携帯電話とタブレット用のアプリをリリースしたばかりですが、タブレット用のGooglePlayに表示されません。

Nexus7とAsuseeeePadでチェック

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

<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>

使用-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" />

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

このアプリケーションは、アプリケーションマニフェストで定義されているように、これらの機能を備えたデバイスでのみ使用できます。画面密度: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
4

7 に答える 7

40

<compatible-screens>ついに、inタグ付きのNexus7の特別なケースを追加することができました。Nexus7には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" />`
于 2012-07-31T17:09:20.450 に答える
36

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

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

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

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

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

于 2012-07-27T17:14:33.503 に答える
19

私は鍵があなたの許可にあると信じています。アプリが使用しRECEIVE_SMSREAD_PHONE_STATEGoogle Playがそれを使用して、アプリが機能するためにこれらの権限を使用する必要があると考えているため、これらのことを実行できないデバイス(タブレット)を除外すると言うことによって。アンドロイド開発者サイトによると:

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

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

テレフォニーCALL_PHONEandroid.hardware.telephonyCALL_PRIVILEGED android.hardware.telephony MODIFY_PHONE_STATE android.hardware.telephony PROCESS_OUTGOING_CALLS android.hardware.telephony READ_SMS android.hardware.telephony RECEIVE_SMS android.hardware.telephony android.hardware.telephony WRITE_APN_SETTINGS android.hardware.telephony WRITE_SMS android.hardware.telephony

あなたが持っRECEIVE_SMSREAD_PHONE_STATEいるので、あなたは自動的に持っていますandroid.hardware.telephony。これを修正するには、

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

これらすべてについて、ここでさらに詳しく説明します。

于 2012-07-27T17:04:07.350 に答える
11

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

注:apkをアップロードすると、GooglePlayは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" />
于 2012-10-17T00:15:38.843 に答える
5

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

<compatible-screens>


代わりにここ を 参照してください

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


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

于 2014-08-04T19:05:05.270 に答える
4

developer.android.comによると

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

可能であれば、アプリで< compatible-screens >要素を使用しないようにする必要があることに注意してください。


したがって、私は次のタスクを実行します、

1-マニフェストから<互換性のある画面>を削除しました

<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-マニフェストに< supports-screens >属性を追加

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

3-マニフェストの< uses-feature >にandroid:required = "false"属性を追加しました(私のアプリケーション要件に従って)

<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に関するより詳細な説明は、属性にあります:android:required false

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


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

サポートされているAndroidデバイスリストに2000を超えるデバイスが追加されました

2000以上のデバイスが追加されました

お役に立てば幸いです

于 2016-09-02T05:32:15.193 に答える
0

私はこの質問に答えることで助けを得ます。

android Phonegapをタブレットで利用できるようにする方法は?

はい。問題は権限にありました。アプリをテストするよりもAndroidManifest.xmlからすべてのアクセス許可を削除し、アクセス許可の欠落エラーが発生したときにアクセス許可を1つずつ追加します。これで、私のアプリはタブレットだけでなくAndroidフォンとも互換性があります。

于 2013-11-20T07:08:35.560 に答える