«Ваше устройство не совместимо с этой версией»

Я помещал приложение в игровой магазин, а мой друг, который работает на 4.0.3 на двух устройствах, получил следующее сообщение при попытке установить мое приложение: «ваше устройство несовместимо с этой версией».

Одно устройство позволяет устанавливать его, а другое – нет. Я допускаю API 3-15, и оба устройства 4.0.3. В чем проблема?

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.snotyak.basicfuelcalcpro" android:versionCode="2" android:versionName="1.2.3" > <uses-sdk android:minSdkVersion="4" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:name=".CalcApp" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/MainTheme" > <activity android:name=".CalcActivity" > </activity> <activity android:name=".PrefsActivity" android:label="@string/prefs_name" /> <activity android:name=".CalcTabView" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".AboutActivity"></activity> <activity android:name=".HistoryActivity" /> <activity android:name=".AnalysisActivity" /> </application> </manifest> 

Дважды проверьте <uses-feature> в файле AndroidManifest.xml . Похоже, ваше приложение требует функции, которую не поддерживает одно из устройств.

Вы также должны проверить, есть ли в вашем AndroidManifest.xml следующее объявление:

 <uses-sdk android:minSdkVersion="3" /> 

Вы хотите, чтобы ваше приложение работало на устройствах с API 3 и выше (а не на API с 3 по 15). Приведенный выше код гарантирует, что ваше приложение будет работать со всеми устройствами выше API 3. Обратите внимание, что вы вообще не хотите использовать атрибут android:maxSdkVersion (если вы в настоящее время используете его).

Поскольку два устройства находятся на одной версии, логическое объяснение, вызывающее сообщение о несовместимости, заключается в том, что устройства отличаются друг от друга, а приложение использует функцию, которую один из них не поддерживает. Посмотрите на свой AndroidManifest.xml и обратите пристальное внимание на теги use uses-feature и uses-permission . Магазин Google Play будет использовать их для фильтрации несовместимых устройств.

Например, если у вас есть <uses-permission android:name="android.hardware.camera"> и на одном из телефонов нет камеры, тогда он будет отфильтрован. Поскольку запрос на разрешение подразумевает, что вашему приложению нужна камера для правильной работы. Вы можете исправить это, добавив в ваш AndroidManifest.xml <uses-feature android:name="android.hardware.camera" android:required="false" /> . Конечно, вам также понадобится код для защиты вашего приложения от попытки доступа к камере, когда он недоступен.

Посмотрите эту страницу для получения дополнительной информации, Фильтры Google Play .

В Google Play есть способ указать, что вызывает отключение устройства. Он очень краткий, но перейдите в нижнюю часть страницы под устройствами и выберите «Показать устройства», а затем отфильтруйте для Galaxy, чтобы убедиться, что она исключена из манифеста.

Фильтр Google Play

Я избавился от

  <uses-sdk android:targetSdkVersion="15" /> 

И он работает сейчас.