Android 9 (niveau d'API 28) introduit de nouvelles fonctionnalités et API que vous pouvez utiliser dans vos applications, ainsi que de nouveaux changements de comportement. Ce document vous donne un aperçu de la procédure de migration vos applications vers Android 9 en deux phases clés:
- Assurer la compatibilité de base avec Android 9
Vérifiez que votre application existante est entièrement fonctionnelle sur la nouvelle version de la plate-forme. À ce stade, vous n'utilisez pas de nouvelles API et ne modifiez pas le
targetSdkVersion
de votre application, mais des modifications mineures peuvent être nécessaires. - Ciblez la nouvelle plate-forme, effectuez la compilation avec le SDK Android 9.
Développer avec les fonctionnalités d'Android 9
Lorsque vous êtes prêt à profiter des nouvelles fonctionnalités de la plate-forme, mettez à jour votre
targetSdkVersion
vers28
, vérifiez que l'application continue de fonctionner comme prévu, puis commencez à utiliser les nouvelles API.
Préparer un appareil équipé d'Android 9
Si vous disposez d'un appareil compatible, procurez-vous les Image système Android 9 fournie par le fabricant pour votre appareil cliquez ici pour images d'usine pour Appareils Pixel Pour obtenir des instructions générales sur le flashage d'une image système, cliquez ici.
Vous pouvez également télécharger l'image système Android 9 pour Android Emulator. Il est listé dans le SDK Manager sous Android API 28 en tant qu'image système Intel x86 Atom des API Google.
Remarque:L'image système de l'émulateur Android 9 est disponible en téléchargement dans Android Studio 3.1 ou version ultérieure Android Studio 3.2 offre une compatibilité maximale. Pour en savoir plus, consultez Obtenir le SDK Android 9.
Assurer la compatibilité avec Android 9
L'objectif est de s'assurer que votre application existante fonctionne en l'état sur
Android 9. Étant donné que certaines modifications de la plate-forme
peuvent affecter le comportement de votre appli,
des ajustements peuvent s'avérer nécessaires, mais vous n'avez pas besoin d'utiliser de nouvelles API ni
modifiez votre targetSdkVersion
.
Effectuer des tests de compatibilité
Dans la plupart des cas, les tests de compatibilité avec Android 9 implique les mêmes types de tests que ceux que vous effectuez lorsque vous préparez le lancement de votre application. C'est le moment de consulter les Consignes fondamentales relatives à la qualité des applications et les Bonnes pratiques de test.
Toutefois, les tests présentent un autre aspect : Android 9 apporte des modifications à la plate-forme Android qui peuvent affecter le comportement de votre application ou la casser complètement, même si vous ne modifiez pas votre targetSdkVersion
. C'est pourquoi il est important que vous examiniez les principaux changements du tableau 1 et que vous testiez les correctifs que vous implémentez pour les prendre en compte.
Tableau 1. Principales modifications affectant toutes les applications fonctionnant sur les appareils Android 9.
Modifier | Résumé |
---|---|
Restrictions concernant les interfaces non SDK |
L'accès à des interfaces non SDK spécifiques est désormais bloqué, que l'accès soit direct, via
JNI, ou via la réflexion. Les tentatives d'accès à des interfaces limitées génèrent des erreurs telles que NoSuchFieldException et NoSuchMethodException .
Voir les Restrictions
sur les interfaces non SDK.
|
Suppression du fournisseur Crypto |
À partir d'Android 9, le fournisseur Crypto JCA a été supprimé. Les appels à SecureRandom.getInstance("SHA1PRNG", "Crypto") génèrent une exception NoSuchProviderException .
|
Décodeur UTF-8 plus strict | Dans Android 9, le décodeur UTF-8 pour Java est plus strict et respecte la norme Unicode. |
Accès à la caméra, au micro et aux capteurs bloqué pour les applications inactives | Lorsque les applis sont inactives, elles ne peuvent plus accéder à l'appareil photo, au micro ni aux capteurs SensorManager. |
Pour obtenir une liste plus complète des modifications de comportement pour toutes les applications exécutées sous Android 9, consultez le document Changements de comportement.
Mettre à jour votre version cible et utiliser les fonctionnalités d'Android P
Cette section explique comment activer la compatibilité totale avec Android 9.
en mettant à jour votre targetSdkVersion
sur 28
et en ajoutant de nouvelles fonctionnalités
disponibles dans Android 9.
En plus de vous proposer de nouvelles API, Android 9 introduit un certain comportement
change lorsque vous mettez à jour votre targetSdkVersion
avec la version 28. Étant donné que certains comportements
peut nécessiter des modifications du code pour éviter les dysfonctionnements, vous devez d'abord comprendre comment votre application peut être
concernés lorsque vous modifiez le targetSdkVersion
en examinant toutes les modifications de comportement pour les applications ciblant Android 9.
Remarque:La procédure décrite ci-dessus pour Assurez-vous que la compatibilité avec les plates-formes est une condition préalable pour cibler votre application sur Android 9. Assurez-vous donc d'avoir effectué au préalable ces étapes.
Obtenir le SDK Android 9
Vous pouvez obtenir les packages SDK pour créer votre application avec Android 9. utilisez Android Studio 3.1 ou version ultérieure. Si vous n'avez pas encore besoin des nouvelles fonctionnalités d'Android 9 et que vous souhaitez uniquement compiler avec cette version de la plate-forme, vous pouvez utiliser Android Studio 3.1. Android Studio 3.2 est entièrement compatible avec Fonctionnalités d'Android 9.
Tester votre application Android 9
Une fois les préparations ci-dessus terminées, vous pouvez compiler votre application, puis la tester plus en détail pour vous assurer qu'elle fonctionne correctement lorsque vous ciblez Android 9 (niveau d'API 28). C'est également le moment de consulter les consignes fondamentales relatives à la qualité des applications et les bonnes pratiques en matière de test.
Lorsque vous compilez votre application avec targetSdkVersion
défini sur P,
vous devez être conscient
des changements spécifiques de la plateforme. Certaines de ces modifications peuvent avoir un impact significatif sur le comportement de votre application ou même l'empêcher de fonctionner complètement, même si vous n'implémentez pas de nouvelles fonctionnalités dans Android 9.
Le tableau 2 liste ces modifications et fournit des liens vers des informations supplémentaires.
Tableau 2. Modifications importantes qui affectent les applications lorsque targetSdkVersion
est défini sur 28.
Modifier | Résumé |
---|---|
Autorisation de service de premier plan | Les applis souhaitant utiliser les services de premier plan doivent désormais demander l'autorisation FOREGROUND_SERVICE en premier. Il s'agit d'une autorisation normale. Le système l'accorde donc automatiquement à l'application à l'origine de la demande. Le démarrage d'un service de premier plan sans cette autorisation génère une exception SecurityException. |
Abandon des algorithmes de chiffrement Bouncy Castle |
Android 9 abandonne plusieurs algorithmes de chiffrement du fournisseur Bouncy Castle au profit de ceux fournis par le fournisseur Conscrypt. Les appels à getInstance() qui demandent au fournisseur Bouncy Castle génèrent des erreurs NoSuchAlgorithmException . Pour résoudre les erreurs, ne spécifiez pas de fournisseur dans getInstance() (c'est-à-dire, demandez l'implémentation par défaut).
|
Suppression de l'accès direct à Build.serial
|
Les applications qui ont besoin de l'identifiant Build.serial doivent désormais demander l'autorisation READ_PHONE_STATE , puis utiliser la nouvelle méthode Build.getSerial() ajoutée dans Android 9.
|
Partage du répertoire de données WebView non autorisé | Les applications ne peuvent plus partager un seul répertoire de données WebView entre les processus. Si votre application comporte plusieurs processus utilisant WebView, CookieManager ou toute autre API du package android.webkit, elle plante lorsque le deuxième processus appelle une méthode WebView. |
L'accès au répertoire de données de l'application est bloqué par SELinux | Le système applique des bacs à sable SELinux par application avec des restrictions SELinux par application sur chaque le répertoire de données privées de votre application. Accéder directement au répertoire de données d'une autre application via son chemin d'accès est désormais non autorisé. Les applications peuvent continuer à partager des données à l'aide de mécanismes d'IPC, y compris en transmettant FD. |
Pour obtenir une liste plus complète des modifications de comportement pour les applications ciblant Android 9, consultez le document Changements de comportement.
Pour découvrir les nouvelles fonctionnalités et API disponibles sur Android 9, consultez Fonctionnalités et API d'Android 9