Bonjour à tous,
J'ai réalisé une première version de mon application, et j'aimerais la décliner facilement pour d'autres usages. Imaginons qu'une autre personne veut la même application avec un layout différent et quelques fonctionnalités en plus / en moins.
Je suis en train de réfléchir à la meilleure solution pour réaliser ça, sachant que j'espère avoir plus d'une demande de personnalisation et que de ce fait, j'essaie de prévoir comment maintenir au mieux et le plus facilement possible toutes ces applications.
Je n'ai pas une grande expérience en Android, mais voici un peu où j'en suis au niveau de la réflexion.
Raisonnement global :
Le cœur de mon application est versionnée avec GIT sur un dépôt "Core". Ensuite je pense mettre en place un dépôt "Prospect Data" qui aura une branche par client. Dans chaque branche, j'aurais l'ensemble des fichiers propres à un client. Ce dépôt "Prospect Data" sera un sous-module GIT de mon dépôt "Core".
- Pour activer / désactiver certaines fonctionnalités, je vais avoir un fichier de config par "client" qui me dit "j'active telle(s) fonctionnalité(s) et je désactive celle(s)-ci. Ce fichier sera donc dans le dépôt "Prospect Data".
- Chaque client aura ses fichiers de Layout et ses ressources, et de ce fait se retrouverons aussi dans ce dépôt.
- Peu importe le client, les ressources / layouts auront le même nom, de façon à ne pas avoir à modifier le "core" pour charger le(s) bon(s) fichier(s).
Je me dis que jusqu'ici ça peut le faire, mais maintenant :
- Google veut un nom unique de package, ce qui veut dire qu'il va falloir que je sois capable de changer l'ensemble des namespaces (package name) en fonction du nom que j'aurais donné. Comment gérer ça au mieux ?
- Idem pour le namespace de mes activités
- Si jamais j'ajoute dans mon Core un fichier qui a besoin de ressource graphique, pour une fonctionnalité donnée, je vais être obligé de l'ajouter dans toutes les branches de "Prospect Data" depuis qu'Android m'oblige à déclarer tous les éléments et me sort des erreurs si jamais ils n'existent pas.
Du coup, avant de me lancer tête baissée dans la mise en place de tout ça, j'aimerais avoir des retours d'expérience de personnes qui ont déjà réalisé ce genre de chose pour voir si je n'ai pas oublié de penser à certains points, ou si jamais il existe des solutions plus propres etc.
Si vous avez des idées ou des liens à me faire parvenir, n'hésitez pas
Merci,
Partager