Les appareils ChromeOS, tels que les Chromebooks, sont compatibles avec le Google Play Store et les applications Android. Ce document s'adresse aux développeurs ayant une application Android conçue pour les téléphones ou tablettes qu'ils souhaitent optimiser pour les Chromebooks. Pour découvrir les bases de la création d'applications Android, consultez Créer votre première application Android.
Mettre à jour le fichier manifeste de votre application
Pour commencer, mettez à jour votre fichier manifeste afin de tenir compte de certaines différences matérielles et logicielles importantes entre les Chromebooks et les autres appareils exécutant Android.
Depuis la version M53 de ChromeOS, toutes les applications Android qui ne nécessitent pas explicitement la fonctionnalité android.hardware.touchscreen fonctionnent également sur les appareils ChromeOS compatibles avec la fonctionnalité android.hardware.faketouch. Toutefois, pour que votre application fonctionne sur tous les Chromebooks, mettez à jour le fichier manifeste pour que la fonctionnalité android.hardware.touchscreen ne soit pas requise, comme illustré dans l'exemple suivant.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
... >
<!-- Some Chromebooks don't support touch. Although not essential,
it's a good idea to explicitly include this declaration. -->
<uses-feature android:name="android.hardware.touchscreen"
android:required="false" />
</manifest>
Chaque type d'appareil est équipé de capteurs spécifiques. Les Chromebooks ne disposent pas forcément de tous les capteurs présents dans les appareils Android portables, tels que le GPS et les accéléromètres. Dans certains cas, il arrive cependant que la fonctionnalité offerte par l'un de ces capteurs soit assurée d'une autre manière. Par exemple, même si les Chromebooks ne disposent pas de capteurs GPS, ils peuvent tout de même fournir des données de localisation basées sur les connexions Wi-Fi. Consultez la présentation des capteurs pour en savoir plus sur les capteurs compatibles avec la plate-forme Android.
Si vous souhaitez que votre application fonctionne sur les Chromebooks indépendamment des capteurs disponibles, mettez à jour le fichier manifeste pour préciser qu'aucun capteur n'est requis.
Certaines fonctionnalités logicielles ne sont pas compatibles avec les Chromebooks. Par exemple, les applications qui fournissent des IME personnalisés, des widgets d'application, des fonds d'écran animés et des lanceurs d'application ne sont pas compatibles et ne peuvent pas être installées sur un Chromebook. Pour obtenir la liste complète des fonctionnalités logicielles non compatibles avec les Chromebooks, consultez Fonctionnalités logicielles incompatibles.
Mettre à jour votre SDK cible
Mettez à jour l'attribut targetSdkVersion de votre application pour spécifier le niveau d'API le plus récent possible, ce qui permettra à votre application de bénéficier de toutes les améliorations de la plate-forme Android.
Consultez les améliorations apportées à la plate-forme Android au fil des différentes versions.
Vérifier la configuration réseau requise
Sur un Chromebook, le système d'exploitation Android s'exécute intégralement dans un conteneur de type Docker ou LXC. Cela signifie qu'Android n'a pas d'accès direct à l'interface LAN du système. À la place, le trafic IPv4 passe par une couche interne de traduction d'adresse réseau (NAT) et l'acheminement du trafic unicast IPv6 se fait via un saut supplémentaire.
La plupart des connexions unicast sortantes d'une application Android vers Internet fonctionnent telles quelles. En général, les connexions entrantes sont bloquées. Les paquets multicast ou broadcast provenant d'Android ne sont pas transmis au réseau LAN via le pare-feu.
Par exception à la restriction du multicast, ChromeOS exécute un service qui transfère le trafic mDNS entre Android et l'interface LAN. Les API de découverte des services réseau standards sont donc la méthode recommandée pour découvrir d'autres appareils sur le segment LAN. Dès qu'elle trouve un appareil sur le réseau LAN, l'application Android peut communiquer avec lui via des sockets unicast TCP ou UDP standards.
Les connexions IPv4 provenant d'Android utilisent l'adresse IPv4 de l'hôte ChromeOS. En interne, l'application Android a accès à une adresse IPv4 privée attribuée à l'interface réseau. Les connexions IPv6 provenant d'Android utilisent une adresse différente de celle de l'hôte ChromeOS, car le conteneur Android dispose d'une adresse IPv6 publique dédiée.
Utiliser efficacement le stockage cloud et local
Les Chromebooks permettent aux utilisateurs de migrer facilement d'un appareil à un autre. Si un utilisateur cesse d'utiliser un Chromebook et commence à en utiliser un autre, il lui suffit de se connecter pour que toutes ses applications s'affichent.
Grâce à cette fonctionnalité, sauvegardez les données de votre application dans le cloud pour permettre la synchronisation entre les appareils. Toutefois, ne comptez pas sur une connexion Internet pour que votre application fonctionne normalement. En revanche, enregistrez le travail de l'utilisateur localement lorsque l'appareil est hors connexion et synchronisez-le dans le cloud une fois que l'appareil est à nouveau en ligne.
Les Chromebooks peuvent également être partagés par un grand nombre d'utilisateurs, comme dans les écoles par exemple. Le stockage local n'étant pas illimité, des comptes entiers ainsi que les données figurant dans leur espace de stockage peuvent être supprimés de l'appareil à tout moment. Il est important de bien prendre en compte ce cas de figure lors d'une utilisation en milieu scolaire.
Développer de nouveaux scénarios de test pour votre application
Pour développer des scénarios de test pour votre application, assurez-vous d'abord de spécifier les indicateurs de manifeste appropriés. En particulier, envisagez de définir screenOrientation sur unspecified. Si vous souhaitez spécifier une orientation paysage, pensez à utiliser sensorLandscape pour assurer une expérience optimale sur tablette.
Si vous avez des besoins particuliers concernant la taille ou l'orientation pour les environnements de bureau, pensez à ajouter des balises Meta en tant qu'indices de taille ou d'orientation. Pour inclure la taille et l'orientation sur les téléphones, spécifiez plutôt les attributs de mise en page defaultHeight, defaultWidth ou minHeight.
Si vous souhaitez définir des interactions particulières de périphériques d'entrée pour des catégories d'appareil spécifiques, spécifiez android.hardware.type.pc de façon à désactiver le mode de compatibilité d'entrée.
Si vous utilisez un réseau de quelque type que ce soit, assurez-vous que l'application peut s'y reconnecter après la résolution d'un problème de connexion ou lorsque l'appareil quitte le mode veille.
Nous vous recommandons de consulter la liste des scénarios de test pour les applications Android sur ChromeOS, que vous pouvez utiliser dans votre plan de test. Ces scénarios de test couvrent des cas fréquents pour lesquels les applications Android doivent être préparées si elles sont destinées à fonctionner sur des appareils ChromeOS.
Mode multifenêtre et changements d'orientation
L'environnement en mode multifenêtre de ChromeOS peut accentuer les problèmes de persistance d'état et de rappel. Utilisez ViewModel pour enregistrer et restaurer votre état lorsque cela est approprié.
Pour tester la persistance d'état, réduisez votre application pendant un certain temps, lancez un autre processus utilisant beaucoup de ressources, puis restaurez votre application pour vous assurer qu'elle a bien conservé l'état dans lequel vous l'avez laissée.
Testez le redimensionnement des fenêtres en appuyant sur la touche plein écran (F4), en les agrandissant, puis en les restaurant. Pour tester le redimensionnement libre, commencez par l'activer dans les options pour les développeurs, puis vérifiez que votre application se redimensionne facilement sans plantage.
Si c'est possible sur votre appareil ChromeOS, passez du mode ordinateur portable au mode tablette pour vérifier que tout fonctionne correctement. Faites pivoter l'appareil une fois qu'il est en mode tablette pour tester les changements d'orientation, puis repassez en mode ordinateur portable. Répétez cette étape plusieurs fois.
Assurez-vous que la barre supérieure ne perturbe pas le fonctionnement de votre application en provoquant un décalage des éléments d'interface utilisateur ou des zones de contrôle tactile. Pour les appareils ChromeOS, vérifiez que votre application ne place pas d'informations importantes dans la zone de la barre d'état.
Si vous utilisez l'appareil photo ou une autre fonctionnalité matérielle, comme le stylet, assurez-vous que cette fonctionnalité se comporte correctement en cas d'interaction avec les fenêtres ou l'appareil, comme décrit précédemment.