53 votes

Ne pas cibler les dernières versions d'Android

J'ai un message d'avertissement lorsque vous essayez de tester thème sur les derniers SDK Android Package 4.2.

Voici mon fichier de manifeste:

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

On ne cible pas les dernières versions d'Android; les modes de compatibilité s'appliquent. Envisager des essais et de la mise à jour de cette version. Consulter l' android.os.Construire.VERSION_CODES javadoc pour des détails. AndroidManifest.xml /ThemeTest ligne 7 Android Peluches Problème

J'utilise un thème personnalisé appelé "AppBaseTheme'. Ma question est qu'est-ce exactement Consulter le android.os.Construire.VERSION_CODES javadoc.. Comment pourrais-je résoudre ce problème?

99voto

Raghav Sood Points 43264

Il dit ceci à cause de l' targetSdkVersion="16". API 16 est Jellybean 4.1 4.1.1 et, tandis que Jellybean 4.2 l'API 17.

Essayez d'utiliser:

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

Aussi, gardez à l'esprit que ce est un tissu d'avertissement. Ces avertissement existent pour vous aider à améliorer votre code et de le rendre facile à entretenir, tout en étant compatible avec la dernière Android changements. En ignorant ce ne sera pas vous poser de problèmes immédiats.

EDIT: Avec Android 4.3, la dernière version du SDK est maintenant âgé de 18 ans, de sorte que vous devez utiliser:

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

EDIT 2: Avec Android 4.4, la dernière version du SDK est désormais 19, de sorte que vous devez utiliser:

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

EDIT 3: Avec Android L, vous devez utiliser les valeurs suivantes, comme décrit ici:

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

EDIT 4: Avec Android L de la version publique, vous devez utiliser 21 au lieu:

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

20 a été utilisé pour 4,4 W, ou pour Android Wear.

7voto

ClCfe Points 61

Vous ne devez pas utiliser android:maxSdkVersion="17" car cela signifie que si quelqu'un utilisant votre application met à jour son système d'exploitation Android vers une version supérieure à 17, votre application sera supprimée.

3voto

Carl Points 5553

Cette charpie message vous indique que le mode de compatibilité sera appliquée automatiquement à toutes les fonctionnalités que vous pourriez avoir utilisé qui ne sont pas disponibles dans les versions ultérieures de votre déclarée targetSdkVersion de 16 ans (et, c'est aussi de vous dire qu'il sont de telles versions ultérieures - par exemple, 17).

Ces automatique le mode de compatibilité des ajustements peuvent ne pas être aussi idéal comme ce que vous pourriez faire vous-même en utilisant toutes les fonctionnalités ont été ajoutées plus tard (que niveau 16) versions pour remplacer les fonctionnalités du niveau 16 ceux que vous avez utilisés, qui ont été supprimés dans les versions ultérieures (le cas échéant). Mais tout devrait encore continuer à travailler dans les versions ultérieures (en raison des ajustements apportés par la compatibilité du code qui est appliquée automatiquement pour fonctionner sur des versions plus élevé que votre déclarée targetSdkVersion l'API de niveau); simplement, il peut ne pas fonctionner aussi bien que votre propre personnalisé, la détection, et l'utilisation de nouvelles fonctionnalités (lorsque votre application détecte qu'il est en cours d'exécution dans les versions ultérieures qui ont ces caractéristiques) permettrait d' avoir travaillé.

Voici une discussion, avec des exemples, des minSdkLevel vs targetSdkLevel:

Android Min Version du SDK vs Cible Version du SDK

Une autre chose que vous voulez à considérer est la relation du Projet de construction de la Cible (le niveau du SDK utilisé pour compiler votre application) à la targetSdkLevel:

Différence entre "Construire Cible SDK" dans Eclipse et android:targetSdkVersion dans AndroidManifest.xml?

2voto

David D Points 33

J'ai eu le même problème m'arrive à moi, il s'avère qu'il existe maintenant une nouvelle (généralement non utilisé) paramètre dans le manifeste que vous aussi souhaitez utiliser. Ajouter android:maxSdkVersion="16" à votre uses-sdk comme j'ai ci-dessous:

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

Cela vous donnera pas d'avertissement lors de l'enregistrement (depuis la version 17 est le courant maximum de la version du SDK)

Le maxSdkVersion n'est pas nécessaire, mais il vous aidera dans le cas où quelque chose dans la version 17 est modifié. Si vous êtes en utilisant la norme ADK des composants de la plateforme, vous n'aurez pas besoin de la maxSdkVersion.

0voto

Anil Chahal Points 143

C'est un message d'avertissement si vous voulez le résoudre, vous pouvez définir android: maxSdkVersion = "17", mais vous devez prendre en compte le fait que si quelqu'un utilise actuellement votre application et met à niveau son système d'exploitation Android à une version supérieure à 17, votre application supprimera automatiquement en raison de la version non prise en charge .. Donc, prenez soin de ce fait aussi ..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X