web-dev-qa-db-fra.com

Ne pas cibler les dernières versions d'Android

Je reçois un avertissement lorsque j'essaie de tester le thème du dernier paquet SDK Android 4.2.

Voici mon fichier 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>

Ne pas cibler les dernières versions d'Android; modes de compatibilité appliquer. Envisagez de tester et de mettre à jour cette version. Consultez le Android.os.Build.VERSION_CODES javadoc pour détails. AndroidManifest.xml/ThemeTest line 7 Problème Android Lint

J'utilise un thème personnalisé appelé «AppBaseTheme». Ma question est ce que exactement Consultez le javadoc Android.os.Build.VERSION_CODES. . Comment pourrais-je résoudre ce problème?

51
Edy Developer

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

Essayez d'utiliser:

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

Aussi, gardez à l'esprit qu'il s'agit d'un avertissement de peluches. Ces avertissements existent pour vous aider à améliorer votre code et à le rendre facile à gérer, tout en étant compatible avec les dernières modifications d'Android. Ignorer cela ne vous causera aucun problème immédiat.

EDIT: Avec Android 4.3, la dernière version du SDK est maintenant 18, vous devriez donc utiliser:

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

EDIT 2: Avec Android 4.4, la dernière version du SDK est maintenant 19, vous devez donc utiliser:

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

EDIT 3: Avec Android L, vous devez utiliser les valeurs suivantes, telles que décrites ici :

compileSdkVersion="Android-L"
minSdkVersion="L"
targetSdkVersion="L"

EDIT 4: Avec la version publique d’Android L, vous devez utiliser 21 à la place:

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

20 était utilisé pour 4.4W, ou pour Android Wear .

EDIT 5: Avec la version publique d’Android M, vous devez utiliser 23 à la place:

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

À l'avenir, veuillez consulter la documentation officielle sur Android pour vous tenir au courant des derniers niveaux des API Android.

98
Raghav Sood

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 avec une version supérieure à 17, votre application sera supprimée.

7
ClCfe

Ce message indique que le mode de compatibilité sera automatiquement appliqué à toutes les fonctionnalités que vous avez peut-être utilisées et qui ne sont pas disponibles dans les versions ultérieures de votre targetSdkVersion déclarée de 16 (et il vous indique également qu'il y a are _ telles versions ultérieures - par exemple 17).

Ces ajustements automatiques du mode de compatibilité peuvent ne pas être aussi parfaits que ce que vous pourriez accomplir vous-même en utilisant les fonctionnalités ajoutées ultérieurement (au niveau 16) pour remplacer les fonctionnalités de celles de niveau 16 que vous avez utilisées, qui ont été supprimées versions ultérieures (le cas échéant). Toutefois, tout devrait continuer à fonctionner dans les versions ultérieures (en raison des ajustements apportés par le code de compatibilité automatiquement appliqué pour une exécution sur des versions supérieures au niveau de votre API déclarée targetSdkVersion); cela risque de ne pas fonctionner aussi bien que votre propre détection et utilisation personnalisées des nouvelles fonctionnalités (lorsque votre application détecte qu'elle est exécutée dans les versions ultérieures dotées de ces fonctionnalités) aurait aurait fonctionné.

Voici une discussion, avec des exemples, de minSdkLevel contre targetSdkLevel:

Version du SDK Android Min par rapport à la version du SDK cible

Une autre chose à prendre en compte est la relation entre la cible de construction du projet (le niveau du SDK utilisé pour compiler votre application) et le targetSdkLevel:

Différence entre "Build Target SDK" dans Eclipse et Android: targetSdkVersion dans AndroidManifest.xml?

3
Carl

J'ai eu le même problème, il s'avère qu'il y a maintenant un nouveau paramètre (généralement inutilisé) dans le manifeste que vous voudrez également utiliser. Ajoutez Android: maxSdkVersion = "16" à votre uses-sdk comme ci-dessous:

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

Cela ne vous donnera aucun avertissement lors de l'enregistrement (puisque la version 17 est la version maximale actuelle du SDK)

La maxSdkVersion n'est pas nécessaire, mais aidera dans le cas où quelque chose dans la version 17 est modifié. Si vous utilisez des composants de plate-forme ADK standard, vous n’avez pas besoin de maxSdkVersion. 

2
David D

C’est un message d’avertissement si vous voulez le résoudre, puis vous pouvez définir Android: maxSdkVersion = "17", mais vous devez vous occuper du fait que si quelqu'un utilise actuellement votre application et met à niveau son système d'exploitation Android vers une version supérieure à 17, votre application sera automatiquement supprimée en raison d'une version non prise en charge. Veillez donc également à prendre en compte ce fait .. 

0
Anil Chahal

Ajoutez 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" />

De: Stuck sur pourquoi mon application Android ne fonctionne pas?

0
kangear