Habitica – Application Android : compilation de l’APK

Contexte du projet : Compilation d’une application Android Habitica

Bonjour,

Je vous présente ici un projet où j’ai eu l’occasion de compiler une version personnalisée de l’application Habitica pour Android. Cette expérience m’a permis de comprendre les subtilités de la compilation à partir d’un dépôt Git et d’ajouter des fonctionnalités personnalisées, comme le choix du serveur utilisé.

Problématique : Changer le serveur par défaut

L’application Habitica utilise par défaut le serveur habitica.com et ne permet pas de modifier cette URL via les paramètres de l’application. Après plusieurs tentatives pour forcer l’application à se connecter à un serveur personnalisé (y compris des manipulations DNS qui se sont avérées inefficaces), j’ai décidé de me tourner vers la compilation du projet afin de modifier directement cette fonctionnalité.

1. Utilisation des sources officielles

Le projet principal que j’ai utilisé se trouve ici :
https://github.com/HabitRPG/habitica-android

J’ai cloné ce projet dans Android Studio et suivi les étapes de la documentation officielle. Cependant, après plusieurs tentatives, l’application ne fonctionnait pas correctement, provoquant des crashs sur l’émulateur Android.

2. Recherche et exploration des issues sur GitHub

Pour approfondir ma compréhension et résoudre ce problème, j’ai exploré les issues ouvertes sur GitHub. Il s’avère que de nombreux utilisateurs ont demandé la possibilité de personnaliser l’URL du serveur. Cependant, bien que cette fonctionnalité ait été suggérée à plusieurs reprises, elle n’a pas été intégrée de manière officielle, et les issues ont été fermées sans explication détaillée. Il semble que la modification de l’URL du serveur nécessite une recompilation, une démarche qui n’est pas simplifiée dans la version officielle de l’application.

3. Problèmes avec le code source

Après plusieurs heures de travail, j’ai constaté que le code fourni semblait présenter plusieurs problèmes techniques. La version officielle du code semblait instable et nécessitait une révision approfondie pour être fonctionnelle.

4. Exploration des forks et solution alternative

J’ai alors exploré les forks disponibles et ai trouvé un projet intéressant développé par awinterstein :
https://github.com/awinterstein/habitica-android
Ce fork inclut déjà une version compilée de l’application qui permet de sélectionner un serveur personnalisé.
Et effectivement ce même développeur à aussi crée le docker compose pour la partie serveur, voici une capture d’écran de la page d’authentification intégrant par défaut la possibilité de choisir l’url du serveur


5. Compilation d’une version personnalisée

Bien que j’aie initialement téléchargé une version compilée de l’application via ce fork, un problème est survenu lorsque l’un de mes utilisateurs a rencontré un crash sur son appareil. Pour résoudre ce problème, j’ai pris les sources du fork, modifié le code pour y intégrer mon propre serveur, et effectué une nouvelle compilation. Après quelques tests sur un émulateur Android 12, j’ai réussi à créer une version stable qui fonctionne désormais correctement sur son smartphone.


Conclusion

Ce projet m’a permis de mieux comprendre le processus de compilation d’une application Android à partir d’un dépôt Git, ainsi que les défis associés à la personnalisation du code source d’une application tierce. Il a également renforcé mes compétences en gestion de version, en recherche de solutions à des problèmes techniques complexes et en développement mobile.


Retour en haut