Le client Android est développé en Kotlin avec Jetpack Compose pour l'interface et un service foreground pour la messagerie persistante et la synchronisation arrière-plan du Radar. Le service foreground est obligatoire : sur les familles Samsung, Xiaomi, OnePlus et Pixel, les optimiseurs de batterie agressifs tuent les services uniquement en arrière-plan en quelques minutes. Le service foreground affiche une notification minimale qui maintient le processus en vie à travers les cycles du mode Doze, et la synchronisation Radar se greffe sur la même fenêtre de processus pour éviter de réveiller l'appareil deux fois. WorkManager gère les opérations non urgentes — nettoyage du cache, vidage de télémétrie, rafraîchissement du token push — avec une sémantique de backoff respectant les états d'économie de batterie sur Android 10 à Android 14.
La messagerie est développée sur WebSocket avec reconnexion automatique. Sur Android, la logique de reconnexion s'exécute à l'intérieur du service foreground, de sorte qu'une brève perte de connectivité (changement d'opérateur entre Wi-Fi et LTE, courant dans les déploiements urbains US et UE) se rétablit en moins de deux secondes sans action de l'utilisateur. L'ordre des messages utilise des ID de séquence monotones assignés par le serveur plutôt que des horodatages clients — source habituelle de bugs d'ordonnancement dans le chat distribué, que nous avons éliminée au stade de l'architecture. La même codebase Android assure toute la parité de fonctionnalités ingénierie iOS et Android : fil, Radar, Stories, JJPremium, marché, statistiques JJFans et le flux d'onboarding multi-écrans.