
Garantir la compatibilité des applications Android Evergine avec Google Play

À partir de fin août 2025, Google Play appliquera de nouvelles exigences aux applications Android : toutes les applications publiées devront cibler Android SDK 35. Cette politique garantit que les applications distribuées via Google Play respectent les dernières normes Android en matière de sécurité, de performances et de confidentialité.
Vous trouverez les exigences officielles dans la documentation officielle de Google.
Pour que les développeurs Evergine puissent continuer à publier leurs applications Android sans interruption, nous avons apporté des mises à jour clés à nos modèles et à nos dépendances natives. Grâce à ces modifications, les projets créés avec Evergine restent conformes aux politiques actuelles et à venir de la plateforme Android.
Mise à jour des modèles Evergine vers .NET 9
La première étape pour répondre à ces nouvelles exigences a consisté à mettre à jour les modèles Android et MAUI d'Evergine pour cibler .NET 9.
Cette mise à niveau permet aux développeurs de compiler et de publier correctement des applications ciblant Android SDK 35, ce qui n'est pas entièrement pris en charge avec .NET 8. Grâce à ce changement, les projets Evergine bénéficient d'une meilleure compatibilité avec les dernières chaînes d'outils Android et d'une expérience de développement plus fluide lors de la préparation des builds pour le Play Store.
Il convient de noter que tous les modèles basés sur Android n'ont pas nécessité cette modification. Les plateformes comme Meta Quest et Pico XR, qui déploient les applications directement sur leurs appareils sans passer par Google Play, ne sont pas concernées par ces règles de ciblage du SDK. Leurs modèles continueront de fonctionner comme avant.
Par ailleurs, le cœur du moteur Evergine lui-même n'a pas été migré vers .NET 9. Notre stratégie consiste à ne passer aux nouvelles versions du runtime que lorsqu'elles atteignent le statut LTS (Long-Term Support), afin de garantir la stabilité et la prévisibilité à long terme des environnements de production. La transition complète du moteur aura donc lieu lorsque .NET 10 deviendra la prochaine version LTS.
Ces mises à jour des modèles constituent une démarche proactive qui permet aux utilisateurs d'Evergine de se préparer en amont à l'échéance fixée par Google pour 2025, tout en préservant la compatibilité et la stabilité dans les différents environnements Android.
Nouvelle restriction : pages de 16 Ko dans Android 16
En effectuant ces mises à jour, nous avons découvert un autre changement important qui concernera les développeurs encore plus tôt. À partir de novembre 2024, Android 16 exigera que toutes les bibliothèques natives utilisent des pages mémoire de 16 Ko.
Ce changement de bas niveau modifie la façon dont les binaires sont générés et alignés, et les applications contenant du code natif qui ne respectent pas cette exigence ne pourront pas démarrer sur les appareils récents.
Lors des tests, plusieurs avertissements sont apparus concernant des dépendances natives utilisées en interne par Evergine et par des bibliothèques externes. Parmi les composants concernés figuraient :
- so, libShaderConductorWrapper.so, libnaga_to_csharp.so (de Evergine.HLSLEverywhere)
- CognitiveServices.Speech.*.so (de Microsoft.CognitiveServices.Speech)
- so (de SkiaSharp.NativeAssets.Android)
- so (de Evergine.OpenAL)
- so (de Evergine.Bindings.Draco)
Ces avertissements indiquaient que certains binaires natifs n'étaient pas encore compilés avec un alignement sur des pages de 16 Ko, ce qui nous a obligés à examiner et à mettre à jour les packages concernés pour garantir une compatibilité totale avec Android 16.
Comment nous avons résolu ces problèmes
Pour garantir la conformité avec les nouvelles exigences techniques d'Android et offrir aux développeurs Evergine une expérience de déploiement fluide, nous avons effectué plusieurs mises à jour et revues de code :
- Mise à jour des dépendances SkiaSharp et Microsoft Cognitive Services Speech vers des versions contenant des binaires natifs correctement alignés.
- Mise à jour du binding de physique Bullet dans Evergine pour inclure des bibliothèques recompilées respectant l'alignement sur des pages de 16 Ko.
- Alignement de la bibliothèque OpenAL utilisée dans les projets Android sur la nouvelle spécification de structure des binaires.
- Suppression de la dépendance à Evergine.HLSLEverywhere dans les launchers Android. Ce package n'a jamais été nécessaire sur Android, car la compilation des shaders y est gérée différemment. HLSLEverywhere reste utilisé sur les plateformes desktop comme Windows, où les shaders sont compilés dynamiquement à l'exécution.
- Respect des standards d'alignement par les futures bibliothèques natives. Les fonctionnalités nouvellement intégrées, comme le support des textures KTX d'Evergine, sont déjà distribuées avec des binaires alignés sur 16 Ko afin de garantir la compatibilité dès le départ, dès lors que la fonctionnalité prend en charge la plateforme Android.
Ces mesures garantissent la compatibilité avec Android 16 et réduisent aussi les dépendances inutiles, pour des structures de projet plus propres, plus légères et plus faciles à maintenir.
Perspectives
Grâce à ces mises à jour, les projets Android Evergine sont désormais entièrement conformes à la politique de ciblage SDK 35 de Google Play et prêts pour les futures exigences de pages mémoire d'Android 16.
Nous recommandons à tous les développeurs qui utilisent Evergine de mettre à jour leurs modèles de projet avant de soumettre de nouvelles versions de leurs applications à Google Play. Cela réduira les risques de problèmes de compatibilité et garantira que leurs applications continuent d'offrir une expérience fiable sur les futurs appareils Android.
Evergine reste engagé à assurer un support à long terme pour les applications 3D et XR industrielles, afin que les projets créés aujourd'hui continuent de fonctionner sans accroc à mesure que les plateformes mobiles évoluent.
