2012-11-11 2 views
0

Il existe plusieurs variables stockées dans la classe android.os.Build que vous pouvez vérifier pour la version actuelle de la plate-forme Android.Android SDK Version à la compilation

Existe-t-il d'autres variables disponibles dans le SDK Android qui représentent la version actuelle du SDK disponible lors de la compilation via l'API Java?

Pour votre information, je suis en train de mettre en œuvre cette fonctionnalité: https://github.com/johncarl81/transfuse/issues/18

Merci.

+1

Que voulez-vous dire par «disponible dans le compilateur/Java VM» comme sur Android que vous utilisez la machine virtuelle Davlik? –

+0

Vous compilez d'abord le code Java Android dans le compilateur Java habituel. Cela génère Java Bytecode qui est ensuite transformé en Dalvik Bytecode par le sdk Android. Je veux dire, y a-t-il un numéro de version disponible pendant la phase de compilation lorsque le Java Android est en train de devenir un bytecode Java? –

+0

Désolé, je ne comprends pas votre question. Je ne suis pas au courant d'une différence majeure dans le bytecode entre les différentes versions de Davik (ou du moins pour un développeur d'applications). Y a-t-il une raison pour laquelle vous voulez savoir? Ou est-ce que votre point me manque? –

Répondre

0

Si vous souhaitez définir un niveau de SDK minimum, cela peut être fait dans le fichier AndroidManifest.xml. Si vous souhaitez prendre en charge plusieurs niveaux de SDK, vous devrez le faire au moment de l'exécution car il est implicite que vous ne saurez pas si vous exécutez SDK 8 ou SDK 15 jusqu'à ce que vous exécutiez votre application. Si vous voulez éviter l'avertissement de charpie, j'utiliserais @TargetApi(...) que opatut référencé ......

+0

Alors, voici l'idée. Comme je peux télécharger plusieurs versions de support sur le marché, je peux compiler une version différente pour chaque niveau d'API. Si je peux compiler une version différente pour chaque niveau d'API, je peux utiliser un code ou des classes différents pour chaque version que je télécharge. Ce que je voudrais faire, c'est tirer parti du niveau de l'API dans ma bibliothèque de processeurs d'annotations personnalisée (extension du compilateur) pour référencer une classe de composants ou une autre en fonction du niveau de l'API. Je parie que je pourrais définir une variable dans Maven, mais je me demandais s'il y avait un moyen plus agnostique de construire-système pour le faire. On dirait que la réponse est probablement non. –

+1

Vous devez toujours effectuer une vérification de l'exécution pour déterminer quel niveau d'OS vous utilisez car vous ne savez pas si l'appareil a été mis à niveau. Tout système/cadre de construction devrait en tenir compte. –

+0

Vous avez raison à ce sujet. Je n'avais pas considéré les mises à jour. Je me demande si cette fonctionnalité serait encore utile avec juste une instruction if d'exécution. Peut-être que je pourrais générer ceci basé sur des annotations. comme décrit dans l'autre question que vous avez souligné. –

Questions connexes