2010-10-12 17 views
32

Je reçois l'avertissement:Que se passe-t-il si la version de minSdk est inférieure à la version de targetSdkVersion?

Attribute minSdkVersion (3) is lower than the project target API level (8) 

Comment cela affectera mon application?

+0

les éléments du SDK dans le manifeste Android sont vraiment bizarre. En commençant par le nom. ils ne veulent pas dire ce qu'ils disent ... Cela n'a rien à voir avec le SDK mais avec l'API. De plus, ce message défait lui-même le but de minSdkVersion. – gcb

Répondre

25

Vous pouvez ignorer l'avertissement en toute sécurité.

C'est un avertissement étrange - cela signifie que vous utilisez des outils pour l'API niveau 8 (Android 2.2/Froyo), mais le niveau d'API cible 3 (Android 1.5/Cupcake). Cet avertissement apparaîtra toujours à moins que vous n'utilisiez le SDK pour cibler la version Android avec laquelle il coïncide. Dans ce cas, vous devrez cibler Android 2.2 avec votre SDK actuel.

+34

Cela signifie que vous feriez mieux de faire des tests approfondis. Étant donné que vous compilez sur l'API cible, il n'existe aucune garantie que toutes les classes et méthodes que vous référencez seront présentes dans les API antérieures que "minSdkVersion" vous oblige à prendre en charge. Vous êtes responsable de vous assurer que vous n'utilisez aucune de ces nouvelles interfaces, ou que vous échouez gracieusement si elles ne sont pas présentes. – beekeeper

+0

Que se passera-t-il si je n'utilise pas cette ligne dans mon manifeste? –

17

Je fais la plupart de mon développement avec le projet défini au niveau minSdkVersion. Cela garantit à peu près que je n'utilise pas d'API plus récentes. Je passe ensuite à mon niveau targetSdkVersion avant de publier l'application. Le seul problème que j'ai rencontré jusqu'à présent est que le niveau inférieur ne supporte pas la syntaxe manifeste que j'ai besoin d'utiliser en production. (Niveau 3, par exemple, ne supporte pas targetSdkVersion.) Je viens de réparer le manifeste après le passage au niveau supérieur.

+0

J'aime cette approche. – DonnaLea

+0

Ceci est une technique intéressante. Vous vous rendez compte que c'est OK, et peut être bénéfique pour vos utilisateurs, d'utiliser des API qui sont plus récentes que (et qui n'existent donc pas dans) 'minSdkVersion'? De cette façon, les utilisateurs disposant de systèmes d'exploitation plus modernes que minSdkVersion peuvent profiter de fonctionnalités plus modernes dans votre application, tandis que les anciens utilisateurs de minSdkVersion peuvent toujours utiliser votre application. Vous devez juste faire attention à la rétrocompatibilité, comme les commentaires de @beekeper dans la réponse acceptée. – Jeffro

+0

@Jeffro - Oui, j'en suis conscient, merci. Je suis également conscient de la charge paresseuse et des techniques connexes décrites dans [blog blog d'Adam Powell] (http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat -it-too.html). J'aime toujours programmer l'API de plus bas niveau que j'ai l'intention de prendre en charge et d'utiliser les fonctionnalités ultérieures uniquement si l'application les exige vraiment. –