Nous sommes à l'aide d'un Android Projet de Bibliothèque pour partager des classes de base et des ressources entre les différentes versions (cibles) de notre application Android. Le Android des projets pour chaque objectif spécifique référence de la bibliothèque de Base du projet (derrière les scènes, Eclipse crée et fait référence à un pot de l'référencé projet de bibliothèque).
Primordial des ressources telles que des images et des layouts XML est facile. Ressources les fichiers placés dans le projet cible, comme l'icône de l'application ou d'un fichier XML de mise en page, automatiquement remplacer le noyau de la bibliothèque de ressources avec le même nom lorsque l'application est construite. Cependant, parfois, une classe doit être substituée à activer la cible de comportements spécifiques. Par exemple, l'Amazone de la cible de l'écran préférences ne peut pas contenir un lien vers le Google Play app page, nécessitant un changement dans l'Amazonie du projet preferences.xml et les préférences de l'Activité de la classe.
L'objectif est de réduire la quantité de code en double parmi les projets cibles tout en supprimant autant de cibles particulières de code à partir de la bibliothèque de Base que possible. Nous avons proposé deux approches à mettre en œuvre des logiques propres à différentes cibles:
- Écrire la cible des fonctions spécifiques au sein de Base de la bibliothèque de classes et de les utiliser si/commutateur de blocs pour sélectionner le comportement basé sur la référence du produit. Cette approche n'est pas très modulaire et gonfle le Cœur de la bibliothèque de la base de code.
- Étendre le particulier de la classe de Base dans une cible de projet et de remplacer la base (Core) des fonctions de classe en tant que de besoin. Puis de conserver une référence à la base de la classe de l'objet dans la bibliothèque de Base et de l'instancier avec une classe étendue de l'objet (à partir de Android projet de bibliothèque - Comment faire pour remplacer une classe?)
Il existe d'autres stratégies pour remplacer ou étendre un Android projet de bibliothèque de classe? Quelles sont les meilleures pratiques pour le partage et l'extension des classes courantes chez Android app cibles?