Nicht auf die neuesten Versionen von Android abzielen

Lesezeit: 5 Minuten

Benutzer-Avatar
Edy-Entwickler

Ich erhalte eine Warnung, wenn ich versuche, das Design auf dem neuesten Android SDK-Paket 4.2 zu testen.

Hier ist meine Manifest-Datei:

<?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>

Nicht auf die neuesten Versionen von Android abzielen; Kompatibilitätsmodi gelten. Erwägen Sie, diese Version zu testen und zu aktualisieren. Weitere Informationen finden Sie im Javadoc android.os.Build.VERSION_CODES. AndroidManifest.xml /ThemeTest line 7 Android Lint Problem

Ich verwende ein benutzerdefiniertes Design namens “AppBaseTheme”. Meine Frage ist was genau Konsultieren Sie die android.os.Build.VERSION_CODES Javadoc.. Wie könnte ich dieses Problem lösen?

Benutzer-Avatar
Raghav Sood

Es sagt dies wegen targetSdkVersion="16". API 16 ist Jellybean 4.1 und 4.1.1, während Jellybean 4.2 API 17 ist.

Versuchen Sie es mit:

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

Denken Sie auch daran, dass dies eine Lint-Warnung ist. Diese Warnungen sollen Ihnen helfen, Ihren Code zu verbessern und die Wartung zu vereinfachen, während er mit den neuesten Android-Änderungen kompatibel ist. Wenn Sie dies ignorieren, werden Sie keine unmittelbaren Probleme haben.

BEARBEITEN: Mit Android 4.3 ist die neueste SDK-Version jetzt 18, daher sollten Sie Folgendes verwenden:

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

EDIT 2: Mit Android 4.4 ist die neueste SDK-Version jetzt 19, daher sollten Sie Folgendes verwenden:

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

EDIT 3: Mit Android L müssen Sie die folgenden Werte wie beschrieben verwenden hier:

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

BEARBEITEN 4: Bei der Veröffentlichung von Android L müssen Sie stattdessen 21 verwenden:

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

20 wurde für 4,4 W oder für verwendet Android Wear.

BEARBEITEN 5: Bei der Veröffentlichung von Android M müssen Sie stattdessen 23 verwenden:

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

Bitte konsultieren Sie in Zukunft die offizielle Android-Dokumentation um sich über die neuesten Android-API-Levels auf dem Laufenden zu halten.

  • Wie sollte ich auf L abzielen?

    – Josua G

    1. Juli 2014 um 14:46 Uhr

  • Beachten Sie, dass dies mit dem überschrieben wird, was sich in Ihrem befindet build.gradle Datei!

    – Gautham C.

    28. Februar 2016 um 1:17 Uhr

  • fügen Sie eine hinzu, um die Antwort ausdauernd und lange aufrechtzuerhalten.

    – Thecave3

    4. Januar 2018 um 23:45 Uhr

  • Ich überprüfe diese Antwort nach 10 Jahren, sie ist immer noch hilfreich für die Verwendung. Vielen Dank

    – Muhammad Afsal

    13. Juni um 20:57 Uhr

Sie sollten nicht verwenden android:maxSdkVersion="17" weil dies bedeutet, dass Ihre App entfernt wird, wenn jemand, der Ihre App verwendet, sein Android-Betriebssystem auf eine Version größer als 17 aktualisiert.

  • Tatsächlich sollte dieses Attribut nicht verwendet werden. Seit API 7 (im Lieferumfang enthalten), d. h. für Android 2.1 und höher, wird dieses Attribut jedoch nicht vom System überprüft. Nur für Android 2.0.1 und niedriger wird Ihre Anwendung vom System entfernt, wenn die aktuelle Version größer als das maxSdkVersion-Attribut ist, andernfalls wird sie ignoriert. Es wird vielmehr von GooglePlay verwendet, um zu filtern, welche Anwendungen für ein Gerät angezeigt werden, wie erläutert hier

    – Lieeeeelo

    2. Januar 2013 um 8:47 Uhr


  • Dieses Attribut wird verwendet, um Ziele für apk aufzuteilen, dh Sie möchten unterschiedliche apk für froyo und gigerbread+ aufgrund der unterschiedlichen Play-Services-sdk verteilen

    – sherpya

    13. Mai 2014 um 2:34 Uhr

  • Wenn die API-Ebene der Plattform höher ist als die von der targetSdkVersion Ihrer App deklarierte Version, kann das System Kompatibilitätsverhalten aktivieren, um sicherzustellen, dass Ihre App weiterhin so funktioniert, wie Sie es erwarten.

    – Dimitri Dewaele

    9. Juli 2014 um 19:19 Uhr

  • OP hat nicht danach gefragt maxSDKVersion aber targetSDKVersion

    – xmen

    20. Januar 2015 um 16:15 Uhr

Benutzer-Avatar
Carl

Diese Lint-Nachricht teilt Ihnen mit, dass der Kompatibilitätsmodus automatisch auf alle Funktionen angewendet wird, die Sie möglicherweise verwendet haben und die in späteren Versionen als Ihrer deklarierten targetSdkVersion von 16 nicht verfügbar sind (und sie teilt Ihnen auch mit, dass dort sind solche späteren Versionen – zB 17).

Diese automatischen Anpassungen des Kompatibilitätsmodus sind möglicherweise nicht so ideal wie das, was Sie selbst erreichen könnten, indem Sie Funktionen verwenden, die in späteren Versionen (als Level 16) hinzugefügt wurden, um die Funktionalität der Level 16-Versionen zu ersetzen, die Sie möglicherweise verwendet haben und die entfernt wurden spätere Versionen (falls vorhanden). Aber alles sollte weiterhin in späteren Versionen funktionieren (aufgrund der Anpassungen, die durch den Kompatibilitätscode vorgenommen wurden, der automatisch angewendet wird, um auf Versionen ausgeführt zu werden, die höher sind als das API-Level Ihrer deklarierten targetSdkVersion); Es funktioniert möglicherweise nicht so gut wie Ihre eigene benutzerdefinierte Erkennung und Verwendung der neuen Funktionen (wenn Ihre App erkennt, dass sie in späteren Versionen mit diesen Funktionen ausgeführt wird). möchten habe gearbeitet.

Hier ist eine Diskussion mit Beispielen von minSdkLevel vs. targetSdkLevel:

Android Min SDK-Version im Vergleich zur Ziel-SDK-Version

Eine andere Sache, die Sie berücksichtigen sollten, ist die Beziehung des Project Build Target (die Ebene des SDK, das zum Kompilieren Ihrer App verwendet wird) zum targetSdkLevel:

Unterschied zwischen “Build Target SDK” in Eclipse und android:targetSdkVersion in AndroidManifest.xml?

Es ist eine Warnmeldung, wenn Sie es lösen möchten, können Sie android:maxSdkVersion=”17″ festlegen, aber Sie müssen darauf achten, dass, wenn jemand Ihre App derzeit verwendet und sein Android-Betriebssystem auf eine höhere Version als aktualisiert 17 dann wird Ihre App aufgrund einer nicht unterstützten Version automatisch entfernt. Achten Sie also auch auf diese Tatsache.

Benutzer-Avatar
Känguru

Hinzufügen 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" />

Von: Hängen Sie daran, warum meine Android-App nicht funktioniert?

Benutzer-Avatar
Selvaganesan Saminathan

Verwenden Sie immer die neueste Android-Version als Ziel-SDK, um mehr Vorteile zu erhalten.

Wenn Sie auf eine aktuelle API-Ebene abzielen, kann Ihre App auch die neuesten Funktionen der Plattform nutzen, um Ihre Benutzer zu begeistern. Darüber hinaus sehen Nutzer ab Android 10 (API-Level 29) beim ersten Start einer App eine Warnung, wenn die App auf Android 5.1 (API-Level 22) oder niedriger abzielt.

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

Weitere Informationen finden Sie auf dieser Entwickler-Website.

https://developer.android.com/distribute/best-practices/develop/target-sdk

1147390cookie-checkNicht auf die neuesten Versionen von Android abzielen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy