2012-07-27 3 views
36

Я только что выпустил приложение для телефонов и планшетов, но он не отображается в 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> 

использует-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 
+4

Там не похоже на что-то неправильное с этим portio n вашего манифеста, поэтому ваша проблема лежит в другом месте (например, [разрешения, подразумевающие требования к характеристикам оборудования] (http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions)). – CommonsWare

+2

Как давно вы выпустили приложение?Если это было не так давно, подождите некоторое время, а затем снова проверьте, если рынок говорит, что ваше приложение совместимо, оно должно работать. – 0gravity

+0

Прошло более 24 часов – Saqib

ответ

40

Наконец-то добавился специальный чехол для Nexus 7 с тегом <compatible-screens>, который работал для меня. Как 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> 

UPDATE:

Для xxhdpi устройств вы можете использовать 480 в качестве целочисленное значение

 <screen android:screenSize="normal" android:screenDensity="480" /> 
    <screen android:screenSize="large" android:screenDensity="480" /> 
    <screen android:screenSize="xlarge" android:screenDensity="480" />` 
+0

Спасибо за этот ответ. Я столкнулся с этой проблемой и не смог понять, почему мое приложение не было доступно на Nexus 7. Следующие ссылки содержат дополнительную информацию. https://plus.google.com/106300001086744879268/posts/Wa9xtQjZHJx http://code.google.com/p/android/issues/detail?id=34076 –

+1

Я пробовал это, но он удаляет некоторые значения по умолчанию поддерживаемых размеров. Как я могу просто добавить поддержку Nexus 7, сохраняя все размеры по умолчанию, или есть способ добавить все размеры (малые +) к тому, что было опубликовано выше? – Inator

+1

@Inator У меня нет поддержки небольшого экрана в моем приложении, поэтому я их опустил. вы можете добавить эти теги, то есть ' ' – Saqib

18

Я верю, ключ находится в ваших разрешениях. Говоря о том, что ваше приложение использует RECEIVE_SMS и READ_PHONE_STATE, Google Play использует это для фильтрации устройств, которые не могут делать эти вещи (планшеты), потому что они думают, что ваше приложение должно использовать эти разрешения для работы. По данным сайта для разработчиков Android:.

«Чтобы предотвратить эти приложения предоставлялись непреднамеренно, Google Play предполагает, что определенные права, связанные с оборудованием указывают , что базовые характеристики оборудования требуются по умолчанию Для например, приложения, использующие Bluetooth, должны запросить разрешение BLUETOOTH для элемента - для устаревших приложений, 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 андроид. hardware.telephony RECEIVE_SMS android.hardware.telephony RECEIVE_MMS android.hardware.telephony RECEIVE_WAP_PUSH android.hardware.telephony SEND_SMS android.h ardware.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" /> 

Все это объясняется более подробно here.

+1

, так что разница между тегом и тег? – Saqib

+0

См. edit: вы можете использовать разрешение, но не использовать эту функцию, но вам нужно вручную ввести use-feature = false. – ninge

+0

После явного добавления тега в false он начал появляться для планшета Asus eeeePad, но все же не появляясь для nexus 7. См. edit – Saqib

33

This page определяет вашу проблему.

Когда вы используете <uses-feature> вместо <uses-permission>, ваше приложение не будет отфильтровано на Market, но ожидает, что вы будете обрабатывать устройства, не поддерживающие эту функцию на уровне кода.

Для любых разрешений на этой странице выше вы можете отключить фильтрацию на основе подразумеваемой функции, явно объявив явную функцию явно в элементе <uses-feature> с атрибутом android:required="false". Например, чтобы отключить фильтрацию на основе разрешения камеры, вы бы добавить это объявление в файл манифеста:

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

Однако при указании <uses-permission>, все устройства, которые не имеют доступа к этой функции фильтруются.

+1

Мне пришлось внести это изменение, чтобы получить мое приложение для nexus 7 – arjoan

+5

Это действительно работает! У меня была та же проблема, когда я использовал разрешение TELEPHONY, и поэтому игра Google не показывала приложение на планшетах без радиотелефонии. Я добавил элемент uses-feature с андроидом: required = "false", и теперь я могу просматривать приложение в Google на своем планшете. –

10

Я должен сделать все эти три вещи, чтобы получить его работайте в Nexus 7. После того, как вы загрузили свой 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" /> 
0

Получаю помощь от ответа на этот вопрос.

How to make android Phonegap available for tablets?

Да. Проблема заключалась в разрешении. Я удаляю все разрешения из AndroidManifest.xml, чем тестирую приложение и добавляю разрешение один за другим при получении отсутствующей ошибки разрешения. Теперь мое приложение совместимо с телефонами Android, а также планшетами.

4

Документация учит нас избегать использования

<compatible-screens> 


см here
вместо этого вы должны использовать

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


Многие другие ответы, представленные на этой странице, являются также эффективными ответы , Я сам их реализовал. Всем спасибо.

3

Согласно developer.android.com

Если приложение объявляет < совместимых-экраны> в манифесте, элемент должен включать в себя атрибуты, которые определяют все комбинации размера и плотности для планшетных экранов, что приложение поддерживает.

Обратите внимание, что, если это возможно, вы должны избежать с использованием < совместимых-экранов> элемента в вашем приложении.


Поэтому я следующие задачи,

1- REMOVED < совместимые-экраны> из манифеста

<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- экраны> атрибут в манифест

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

3- ДОБАВЛЕНО андроид: требуется = "ложь" атрибут в < используют-функцию в явном

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

Official>(согласно моему требованию приложения) Документация для Android о Permissions that Imply Feature Requirements

Более подробное объяснение относительно Android: требуется ложь присутствует в ATTRIBUTES: android:required false

При объявлении андроида: требуется = «ложь» для функции, то это означает, что приложение предпочитает использовать функцию, если на устройстве, но она предназначена для работы без указанной функции, при необходимости (это разрешение на телефонию в случае таблеток).


Делая вышеуказанные изменения, в списке поддерживаемых Android устройств

БОЛЕЕ 2000 УСТРОЙСТВ были добавлены

2000+ devices added

Я надеюсь, что помогает

Смежные вопросы