Nous avons donc vu la prévisualisation sdk et les nouvelles fonctionnalités comme ActionBar et Fragments. Faire beaucoup d'appels de méthodes sera inévitable à utiliser, alors quelles sont les stratégies pour maintenir 1 version de l'application, ce qui me permettra d'utiliser toutes les nouveautés, mais aussi sur les appareils fonctionnant sous 2.3 ou moins? Mon application cible de 1,5 à 2,3 pour le moment.Stratégies pour Honeycomb et rétrocompatibilité
Répondre
Les mêmes API fragment sont maintenant disponibles en tant que static library pour une utilisation avec les anciennes versions d'Android; C'est compatible avec Android 1.6.
Vous pouvez utiliser quelques astuces pour voir si les différentes nouvelles API sont disponibles pour votre application. D'une manière générale, vous souhaiterez probablement créer deux autres jeux d'activités, l'un utilisant les nouvelles API fantaisistes (ActionBar, Animators, etc.), et l'autre non.
Le code suivant montre comment utiliser la réflexion et la capture d'exception pour déterminer la disponibilité des API de fragmentation et vérifier la version pour vérifier si les autres API Honeycomb sont disponibles.
private static boolean shinyNewAPIsSupported = android.os.Build.VERSION.SDK_INT > 10;
private static boolean fragmentsSupported = false;
private static void checkFragmentsSupported() throws NoClassDefFoundError {
fragmentsSupported = android.app.Fragment.class != null;
}
static {
try {
checkFragmentsSupported();
} catch (NoClassDefFoundError e) {
fragmentsSupported = false;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent startActivityIntent = null;
if (!shinyNewAPIsSupported)
startActivityIntent = new Intent(this, MainNonActionBarActivity.class);
else
startActivityIntent = new Intent(this, MainActionActivity.class);
startActivity(startActivityIntent);
finish();
}
De manière générale, vous pouvez utiliser les mêmes définitions de disposition. Là où les fragments sont disponibles, vous allez gonfler chaque mise en page dans un fragment différent, où ils ne sont pas, vous voudrez probablement utiliser les balises <include>
pour en intégrer plusieurs dans une mise en page d'activité plus complexe.
Un travail plus détaillé par la façon d'écrire le code pour soutenir la rétrocompatibilité sur Honeycomb se trouve ici: http://blog.radioactiveyak.com/2011/02/strategies-for-honeycomb-and-backwards.html
Vous trouverez peut-être utile la section article on backwards-compatibility de Reto Meier, en particulier la section intitulée «Traitement des classes manquantes». Je n'ai pas encore regardé le SDK Honeycomb mais moi, comme vous, j'espère qu'il est assez facile et sans tracas d'utiliser les nouvelles fonctionnalités sans compromettre la compatibilité avec les anciens appareils.
Vérifiez également ce post, qui donne plus d'exemples de travail avec plusieurs versions de plate-forme: http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html – adamp
J'ai lu les deux, mais il semble que Honeycomb sera plus impliqué, en particulier avec des choses comme Fragments et le ActionBar. Pensez-vous que l'utilisation de ces techniques sera suffisante? –
Commodément, Google Dianne Hackborne a posté a blog entry couvrant ce sujet exact. Google indique qu'ils fourniront des bibliothèques statiques afin que les anciennes versions d'Android puissent également utiliser des fragments.
bien Google vient d'annoncer en nid d'abeille sera comprimé seulement: http://www.pcmag.com/article2/0,2817,2379271,00.asp
Donc, si votre appareil est conçu pour mobile que cela ne peut être même un problème.
échantillon Android officiel qui vous aidera à atteindre ActionBar from 1.6 to 4.x
- 1. Rétrocompatibilité pour IDL/ODL
- 2. Le kit de développement logiciel Honeycomb a-t-il annulé la rétrocompatibilité avec GridView?
- 3. Android rétrocompatibilité
- 4. Android Honeycomb et imeOptions
- 5. Rétrocompatibilité BackupAgent
- 6. Honeycomb et startManagingCursor
- 7. Rétrocompatibilité Xcode
- 8. SYSTEM_UI_FLAG_IMMERSIVE_STICKY rétrocompatibilité
- 9. Plugin Rétrocompatibilité
- 10. Stratégies pour surcharger database.yml
- 11. Barre d'action et marges Honeycomb
- 12. SQL Server 2005 XML Capacités et rétrocompatibilité
- 13. Meilleures pratiques pour la rétrocompatibilité API
- 14. convertir gtkglade en libglade pour une rétrocompatibilité
- 15. Test de rétrocompatibilité OSX
- 16. MediaCodecList pour Google TV/Honeycomb
- 17. Ressource pour la rétrocompatibilité en HTML5?
- 18. Valeurs par défaut pour Honeycomb
- 19. OpenGL Shading Language rétrocompatibilité
- 20. Rétrocompatibilité dans Sencha
- 21. rétrocompatibilité Visual Studio
- 22. rétrocompatibilité de UIWindow RootViewController
- 23. Cocoa/Xcode - rétrocompatibilité OSX
- 24. rétrocompatibilité de play-1.2.3
- 25. Rétrocompatibilité de onBackPressed
- 26. DataContract rétrocompatibilité de sérialisation
- 27. Android rétrocompatibilité des fragments
- 28. Rétrocompatibilité dans SQLite
- 29. Stratégies pour documenter + commenter rétroactivement
- 30. Stratégies pour la parallélisation automatique
Aussi, si la seule API supplémentaire dont vous avez besoin est la barre d'action, jetez un oeil à une bibliothèque que j'ai écrite qui est une extension de la bibliothèque de compatibilité qui ajoute juste cela. Il fournit une seule API pour la barre d'action et permet également l'utilisation d'un seul thème. Vous pouvez trouver plus d'informations sur http://actionbarsherlock.com. –