La plupart des téléphones Android sont équipés de chipsets ARM. Toutefois, de nombreux appareils ChromeOS utilisent des puces x86. Cette différence n'est pas importante pour les applications écrites en Kotlin ou en Java. Toutefois, pour les applications écrites dans le NDK Android, y compris celles créées avec des moteurs de jeu, le chipset de l'appareil peut être une préoccupation importante.
Idéalement, toutes les applications avec le code Android NDK devraient être fournies avec les quatre principales ABI (interfaces binaires d'application) Android : armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) et x86_64.
Cela permet d'obtenir les meilleures performances et la plus faible consommation de batterie pour chaque appareil. Par exemple, un fichier build.gradle basé sur CMake peut contenir les éléments suivants :
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}Taille de l'APK
Chaque ABI dans un APK monolithique augmente sa taille. Cela peut avoir un impact sur l'utilisation du disque par vos utilisateurs, sur la taille de téléchargement de l'application et peut se heurter aux limites de taille du Play Store. Le meilleur moyen d'éviter cela est d'utiliser les Android App Bundles. Les app bundles vous permettent de regrouper facilement les quatre ABI dans Android Studio, sans augmenter la taille du téléchargement pour vos utilisateurs. Ils facilitent également l'utilisation de Dynamic Delivery, qui permet aux utilisateurs de télécharger des contenus de jeu volumineux uniquement sur demande. Si vous ne pouvez pas utiliser les app bundles, vous pouvez utiliser l'ancienne méthode multi-APK pour obtenir un comportement similaire.
32 bits ou 64 bits
Toutes les applications Android doivent fournir une version 64 bits. Un build 32 bits est facultatif pour les appareils ARM et x86. Pour en savoir plus, consultez la documentation Android 64 bits.
Si vous ne fournissez que des versions 64 bits, vous réduisez le nombre de cibles de compilation nécessaires et votre surface de test, mais vous limitez également les types d'appareils pouvant exécuter votre jeu. Par exemple, en raison d'autres limitations matérielles, de nombreux anciens Chromebooks ne peuvent exécuter que des applications Android 32 bits, même s'ils sont équipés de processeurs 64 bits. Pour vous assurer que votre application peut s'exécuter sur ces appareils, incluez la compatibilité 32 bits et 64 bits.
Remarque : Toutes les nouvelles applications et les applications mises à jour doivent inclure une version 64 bits. Le Play Store ne propose plus d'applications 32 bits aux appareils compatibles avec les applications 64 bits. De nombreux Chromebooks sont compatibles avec le 64 bits. Nous vous recommandons de mettre à jour votre application dès que possible pour inclure une version 64 bits afin d'assurer la continuité pour les utilisateurs de votre application sur ChromeOS.
Traduction ARM
Les Chromebooks x86 tentent de traduire le code ARM chaque fois que possible. Toutefois, la traduction ralentit les performances et sollicite davantage la batterie. Même les jeux simples doivent envisager de fournir des builds x86 pour offrir la meilleure expérience utilisateur possible. Si vous ne pouvez pas fournir de versions x86, notez que certains Chromebooks x86 ne peuvent pas traduire le code arm64. Dans ce cas, vous devez inclure les ABI arm32 et arm64 dans vos builds.
Bien que la traduction arm32 soit disponible sur tous les Chromebooks compatibles avec Android, tous les Chromebooks ne peuvent pas traduire le code arm64. Cela signifie que si votre jeu ne comporte que des cibles de compilation arm64, il ne sera pas disponible pour un grand nombre d'appareils ChromeOS. Si vous ne pouvez pas fournir de binaires x86, incluez les ABI arm32 et arm64 dans vos builds.
| ABI incluses | Prise en charge de ChromeOS |
|---|---|
arm64 | Médiocre |
arm32/arm64 | OK (avec traduction) |
arm32/arm64/x86_32/x86_64 | Excellentes |