Не нацелены на последние версии 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; режимы совместимости применять. Рассмотрите возможность тестирования и обновления этой версии. Проконсультируйтесь с андроид.ОС.Строить.VERSION_CODES javadoc для подробности. AndroidManifest.xml / ThemeTest line 7 Android Lint Problem

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

6 51

6 ответов:

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

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

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

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

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

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

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

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

EDIT 3: с Android L, вы должны использовать следующие значения, как описано здесь:

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

EDIT 4: с публичным выпуском Android L, вы должны использовать 21 вместо:

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

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

EDIT 5: с публичным выпуском Android M вы должны использовать 23 вместо этого:

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

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

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

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

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

вот обсуждение, с примерами, minSdkLevel против targetSdkLevel:

Андроид минимальная версия SDK и целевую версию SDK

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

разница между "построить целевой SDK" в Eclipse и android: targetSdkVersion в AndroidManifest.xml?

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

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

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

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

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

добавить 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 приложение не будет работать?