Nano Hash - криптовалюты, майнинг, программирование

Почему мое приложение не отображается на планшетах в 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" />

После явного добавления тега uses-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

  • Похоже, что в этой части вашего манифеста нет ничего плохого, поэтому ваша проблема заключается в другом (например, разрешения, подразумевающие требования к функциям оборудования). 27.07.2012
  • Как давно вы выпустили свое приложение? Если это было не так давно, то подождите некоторое время, а затем проверьте еще раз, если маркет говорит, что ваше приложение совместимо, оно должно работать. 27.07.2012
  • Прошло уже больше 24 часов 27.07.2012
  • проверьте теги use-feature (например, если android.hardware.telephone, убедитесь, что установлено required=false, а также убедитесь, что у вас есть ‹supports-screens android:xlargeScreens=true /› 27.07.2012
  • У меня нет тега использования в манифесте. Используется тег «совместимые экраны», поэтому нет смысла использовать «поддерживает экраны» 27.07.2012

Ответы:


1

Наконец-то мне помогло добавление специального случая для 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>

ОБНОВИТЬ:

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

     <screen android:screenSize="normal" android:screenDensity="480" />
     <screen android:screenSize="large" android:screenDensity="480" />
     <screen android:screenSize="xlarge" android:screenDensity="480" />`
31.07.2012
  • Спасибо за этот ответ. Я столкнулся с этой проблемой и не мог понять, почему мое приложение недоступно на Nexus 7. Дополнительные сведения приведены по следующим ссылкам. plus.google.com/106300001086744879268/posts/Wa9xtQjZHJx code.google.com/p/android/issues/detail?id=34076 14.08.2012
  • Я пробовал это, но он удаляет некоторые поддерживаемые по умолчанию размеры. Как я могу просто добавить поддержку Nexus 7, сохранив при этом все размеры по умолчанию, или есть способ добавить все размеры (маленький+) к тому, что было опубликовано выше? 13.02.2013
  • @Inator В моем приложении нет поддержки маленьких экранов, поэтому я их пропустил. вы можете добавить эти теги, т.е. <!-- 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" /> 20.02.2013
  • работает ли compatible-screens вместо supports-screens или нужны оба? 11.03.2014
  • Я думаю, что это должно быть ‹экран android:screenSize=большой android:screenDensity=tvdpi /› 20.08.2014

  • 2

    На этой странице указана ваша проблема.

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

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

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

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

    27.07.2012
  • мне также пришлось внести это изменение, чтобы мое приложение было доступно для Nexus 7 10.09.2012
  • Это действительно работает! У меня была та же проблема, когда я использовал разрешение ТЕЛЕФОНИЯ, и поэтому Google Play не отображал приложение на планшетах без телефонного радио. Я добавил элемент use-feature с android:required=false, и теперь я могу просматривать приложение в Google Play на своем планшете. 06.05.2013

  • 3

    Я верю, что ключ находится в ваших разрешениях. Говоря, что ваше приложение использует 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 android.hardware.telephony RECEIVE_SMS android.hardware.telephony RECEIVE_MMS android.hardware.telephony RECEIVE_WAP_PUSH android. 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" />
    

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

    27.07.2012
  • так в чем же разница между тегом ‹uses-feature› и тегом ‹uses-permission›? 27.07.2012
  • Смотрите редактирование: вы можете использовать разрешение, но не использовать функцию, но вам нужно вручную ввести use-feature=false. 27.07.2012
  • После явного добавления тега ‹uses-feature› в значение false он начал отображаться для планшета Asus eeeePad, но по-прежнему не отображается для nexus 7. См. редактирование 28.07.2012
  • Я думаю, гораздо лучший ответ 19.02.2015

  • 4

    Я должен сделать все три из этих вещей, чтобы заставить его работать на Nexus 7. После того, как вы загрузили свой apk, вы можете проверить настройку, сначала активировав новый apk, перейдите к сведениям о продукте и найдите поддерживаемые устройства. Если Nexus 7 не найден в разделе «Неподдерживаемые устройства из-за настроек вашего манифеста», все в порядке.

    Примечание. Как только вы загрузите свой apk, Google Play преобразует плотность 213 в tvdpi. Не уверен, почему это не вариант в инструменте манифеста затмения...

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

    5

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

    <compatible-screens>
    


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

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


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

    04.08.2014

    6

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

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

    Обратите внимание: по возможности следует избегать использования элемента ‹совместимые экраны› в приложении.


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

    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- ДОБАВЛЕНО атрибут 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 содержится в АТРИБУТЫ: Android: требуется ложь

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


    Выполняя вышеуказанные изменения,

    БОЛЕЕ 2000 УСТРОЙСТВ добавлено в список поддерживаемых устройств Android

    Добавлено более 2000 устройств

    Надеюсь, это поможет

    02.09.2016

    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..