Подтвердить что ты не робот

Не нацеливать последние версии Android

У меня есть предупреждение при попытке протестировать тему на последнем пакете Android SDK 4.2.

Вот мой файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.themetest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppBaseTheme" >
        <activity
            android:name="com.example.themetest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Не нацеливание на последние версии Android; режимы совместимости подать выражение. Рассмотрите возможность тестирования и обновления этой версии. Проконсультируйтесь android.os.Build.VERSION_CODES javadoc для Детали. AndroidManifest.xml/ThemeTest line 7 Проблема с линзой Android

Я использую настраиваемую тему под названием "AppBaseTheme". Мой вопрос в том, что именно Обратитесь к android.os.Build.VERSION_CODES javadoc.. Как я могу решить эту проблему?

4b9b3361

Ответ 1

Это говорит об этом из-за targetSdkVersion="16". API 16 - Jellybean 4.1 и 4.1.1, а Jellybean 4.2 - API 17.

Попробуйте использовать:

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

Кроме того, имейте в виду, что это предупреждение Lint. Эти предупреждения существуют, чтобы помочь вам улучшить ваш код и упростить его поддержку, будучи совместимым с последними изменениями Android. Игнорирование этого не вызовет никаких проблем.

EDIT: с Android 4.3 последняя версия SDK теперь составляет 18, поэтому вы должны использовать:

...
        android:targetSdkVersion="18" />

EDIT 2: с Android 4.4 последняя версия SDK теперь 19, поэтому вы должны использовать:

...
        android:targetSdkVersion="19" />

РЕДАКТИРОВАТЬ 3: С Android L вы должны использовать следующие значения, как описано здесь:

compileSdkVersion="android-L"
minSdkVersion="L"
targetSdkVersion="L"

РЕДАКТИРОВАТЬ 4: С открытым релизом Android L вы должны использовать вместо этого 21:

...
        android:targetSdkVersion="21" />

20 использовался для 4.4W, или для Android Wear.

РЕДАКТИРОВАТЬ 5: В общедоступном релизе Android M вместо этого вы должны использовать 23:

...
        android:targetSdkVersion="23" />

В будущем, пожалуйста, обратитесь к официальной документации по Android чтобы поддерживать себя в курсе последних уровней API Android.

Ответ 2

Вы не должны использовать android:maxSdkVersion="17", потому что это означает, что если кто-то, использующий ваше приложение, обновит свою ОС Android до версии более 17, ваше приложение будет удалено.

Ответ 3

В этом сообщении lint вам сообщается, что режим совместимости будет автоматически применен к любым функциям, которые вы, возможно, использовали, которые недоступны в более поздних версиях, чем заявленная targetSdkVersion 16 (и, кроме того, он также говорит вам, что есть такие более поздние версии - например, 17).

Эти автоматические настройки режима совместимости могут быть не такими идеальными, как то, что вы могли бы выполнить самостоятельно, используя любые функции, которые были добавлены в более поздних версиях (вместо уровня 16), чтобы заменить функциональность уровней 16, которые вы, возможно, использовали, которые были удалены в более поздних версиях (если они есть). Но все должно продолжаться работать в более поздних версиях (из-за настроек, сделанных кодом совместимости, который автоматически применяется для работы на версиях выше вашего объявленного уровня targetSdkVersion API); он может работать не так хорошо, как ваше собственное пользовательское обнаружение и использование новых функций (когда ваше приложение обнаруживает, что оно работает в более поздних версиях с этими функциями) работало бы.

Ниже приведено обсуждение с примерами minSdkLevel vs. targetSdkLevel:

Версия Android Min SDK по сравнению с целевой версией SDK

Еще одна вещь, которую вы хотите рассмотреть, - это отношение Project Build Target (уровень SDK, используемого для компиляции вашего приложения) к targetSdkLevel:

Разница между "Build Target SDK" в Eclipse и Android: targetSdkVersion в AndroidManifest.xml?

Ответ 4

У меня была такая же проблема со мной, оказалось, что в манифесте появился новый (обычно неиспользуемый) параметр, который вы также захотите использовать. Добавьте android: maxSdkVersion = "16" в ваш use-sdk, как у меня:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17"
    android:maxSdkVersion="17" />

Это не даст вам предупреждения при сохранении (поскольку версия 17 является текущей максимальной версией SDK)

MaxSdkVersion не требуется, но поможет в случае, если что-то в версии 17 будет изменено. Если вы используете стандартные компоненты платформы ADK, вам не понадобится maxSdkVersion.

Ответ 5

Это предупреждающее сообщение, если вы хотите его решить, тогда вы можете установить android: maxSdkVersion = "17", но вам нужно позаботиться о том, что если кто-то в настоящее время использует ваше приложение и обновляет свою ОС Android до большей версии, чем 17, то ваше приложение автоматически удалит из-за неподдерживаемой версии.. Так что позаботьтесь об этом тоже.

Ответ 6

Добавить xmlns:tools="http://schemas.android.com/tools" tools:ignore="OldTargetApi".

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.themetest"
    android:versionCode="1"
    android:versionName="1.0" xmlns:tools="http://schemas.android.com/tools" tools:ignore="OldTargetApi">

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

От: Застрял, почему мое приложение Android не работает?