Je viens tout juste de recevoir et de lire bulletin d’information de Google Play , mentionnant que, à partir de l’année prochaine, le magasin "demandera aux nouvelles applications et aux mises à jour des applications avec bibliothèques natives de fournir des versions 64 bits en plus de leurs 32 versions binaires ".
Pour ceux qui ne l'ont pas encore lu, on peut lire:
Configuration requise pour la prise en charge 64 bits en 2019
La plate-forme de prise en charge des architectures 64 bits a été introduite dans Android 5.0. Aujourd'hui, plus de 40% des Android mis en ligne disposent d'une prise en charge 64 bits, tout en maintenant Compatibilité 32 bits: pour les applications utilisant des bibliothèques natives, le code 64 bits offre généralement de meilleures performances, avec des registres supplémentaires et de nouvelles instructions.
En prévision des futurs Android ne prenant en charge que le code 64 bits, Play Console exigera que les nouvelles applications et les mises à jour d'applications avec les bibliothèques natives fournissent des versions 64 bits en plus de leurs versions 32 bits. Cela peut être dans un fichier APK unique ou en tant que l'un des fichiers APK publiés.
Nous ne supprimons pas le support 32 bits. Google Play continuera à prendre en charge les applications et les appareils 32 bits. Les applications qui n'incluent pas de code natif ne sont pas affectées.
Ce changement entrera en vigueur en août 2019. Nous fournissons aujourd'hui un préavis afin de laisser suffisamment de temps aux développeurs qui ne prennent pas encore en charge la version 64 bits pour planifier la transition. Restez à l'écoute pour un prochain article dans lequel nous examinerons en détail les avantages des bibliothèques natives 64 bits sur Android en termes de performances, ainsi que le guide sur les processeurs et les architectures du NDK pour plus d'informations.
Quels changements pratiques devrons-nous apporter pour se conformer parfaitement à cette nouvelle exigence, le cas échéant?
Selon un e-mail officiel envoyé par l'équipe Google Play, l'action requise est la suivante:
Si vous ne l'avez pas encore fait, nous vous encourageons à commencer à travailler dès que possible sur l'exigence 64 bits. De nombreuses applications sont entièrement écrites en code non natif (par exemple, le Java ou Kotlin) et n'auront pas besoin de modifications de code.
Veuillez noter que nous n'apportons aucune modification à notre politique de prise en charge 32 bits. Google Play continuera à fournir des applications avec code natif 32 bits aux appareils 32 bits. L'exigence signifie que ces applications devront également disposer d'une version 64 bits.
Pour vous aider à faire la transition, nous avons préparé documentation comment vérifier si votre application prend déjà en charge la version 64 bits et comment devenir compatible 64 bits.
Nous fournissons également un calendrier de haut niveau ci-dessous.
Ainsi, la documentation liée explique:
Si votre application utilise uniquement du code écrit dans le Java ou Kotlin, y compris les bibliothèques ou les kits SDK), votre application est déjà prête pour les appareils 64 bits. Si votre application utilise un code natif, ou vous n'êtes pas sûr que ce soit le cas, vous devrez évaluer votre application et prendre des mesures.
[...]
Le moyen le plus simple de rechercher des bibliothèques 64 bits consiste à inspecter la structure de votre fichier APK. Une fois construit, l'APK sera packagé avec toutes les bibliothèques natives nécessaires à l'application. Les bibliothèques natives sont stockées dans divers dossiers basés sur ABI. Il n'est pas nécessaire de prendre en charge chaque architecture 64 bits, mais pour chaque architecture 32 bits native, vous devez inclure l'architecture 64 bits correspondante.
Pour l'architecture ARM), les bibliothèques 32 bits sont situées dans armeabi-v7a. L'équivalent 64 bits est arm64-v8a.
Pour l'architecture x86, recherchez x86 pour 32 bits et x86_64 pour 64 bits.
La première chose à faire est de vous assurer que vous avez des bibliothèques natives dans ces deux dossiers. [...]
Et, pour construire des bibliothèques 64 bits, vous devez essentiellement suivre les instructions ci-dessous:
La plupart Android Les projets de studio utilisent Gradle comme système de génération sous-jacent, cette section s’applique donc aux deux cas. Activer les générations pour votre code natif est aussi simple que d’ajouter arm64-v8a et/ou x86_64, selon le cas. sur la ou les architectures que vous souhaitez prendre en charge, définissez le paramètre ndk.abiFilters dans le fichier 'build.gradle' de votre application:
// Your app's build.gradle apply plugin: 'com.Android.app' Android { compileSdkVersion 27 defaultConfig { appId "com.google.example.64bit" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' // ...
Enfin, un petit mot:
La version 64 bits de votre application doit offrir la même qualité et les mêmes fonctionnalités que la version 32 bits.
A propos, cette vidéo officielle en parle un peu.
Si vous n'avez pas de code natif (NDK), c'est-à-dire que vous écrivez seulement du code Java/Dex, vous n'avez rien à faire.
Si vous avez du code natif (ou des bibliothèques), vous devez fournir leur version 64 bits.
Selon la documentation ici , si votre application utilise du code natif ou une bibliothèque externe, par exemple un domaine (dans l'image ci-dessous) basé sur le langage natif, un support pour 64 bits doit être fourni. Si l'une des bibliothèques externes de votre application qui utilise un langage C/C++ (natif) doit être prise en charge par les architectures 32 et 64 bits, vous devez sinon contacter le propriétaire de la bibliothèque. Dans Android Studio, nous pouvons vérifier si les versions des deux architectures sont disponibles via Construire> Analyser APK et la fenêtre suivante. apparaît:
Si vous utilisez NDK et créez du code natif, vous devez fournir un support pour les deux architectures en les inscrivant dans le dégradé sous la forme:
defaultConfig {
ndk.abiFilters = 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'
}
Si votre Android APK ne comprend pas la prise en charge 64 bits, ne vous inquiétez pas. Allez à Construire -> Analyser APK, dans Android Studio. Vous êtes capable de voir la structure APK. Sous lib, si vous voyez armeabi-v7a
bibliothèques et si vous n’avez pas de arm64-v8a
ou x86_64
bibliothèques, votre APK ne prend pas en charge l’architecture 64 bits.
Il suffit d'aller au niveau de l'application build.gradle
et ajoutez abiFilters
dans le NDK sous defaultConfig
comme ci-dessous:
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
Code natif: fait référence à un programme exécutable compilé directement dans les instructions de la CPU de l'ordinateur sur lequel il est exécuté.
Code non natif: fait référence à un programme exécutable compilé selon les instructions de la CPU de l’architecture Tandem originale de la fin des années 1970 et des années 1980. Lorsqu'un tel programme est exécuté, il ne peut pas être exécuté directement sur la CPU de l'ordinateur sur lequel il est exécuté. Le système d'exploitation NonStop inclut un interpréteur pour cette architecture Tandem d'origine, qui est utilisé pour exécuter ce code non natif.
Si votre application utilise uniquement du code écrit dans le Java ou Kotlin, y compris les bibliothèques ou les kits SDK), votre application est déjà prête pour les appareils 64 bits. Si votre application utilise un code natif, ou vous n'êtes pas sûr que ce soit le cas, vous devrez évaluer votre application et prendre des mesures.
Votre application utilise-t-elle du code natif?
La première chose à faire est de vérifier si votre application utilise du code natif. Votre application utilise le code natif si:
Pour plus d'informations, visitez la documentation .
Ajouter
ndk {
abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}
dans le build.Gradle
fichier sous DefaultConfig
. Notez que l'exigence Push to Play Store 64 bits arrive.