Commencez à créer des applications pour ChromeOS

Les appareils ChromeOS, tels que les Chromebooks, sont compatibles avec le Google Play Store et les applications Android. Cet article suppose que vous disposez d'une application Android conçue pour les téléphones ou les tablettes et que vous souhaitez l'optimiser pour les Chromebooks. Pour découvrir les bases de la création d'applications Android, consultez la page Créer votre première application Android.

Mettre à jour le fichier manifeste de votre application

Pour commencer, mettez à jour votre fichier manifeste en tenant compte des principales différences matérielles et logicielles entre les Chromebooks et les autres appareils équipés d'Android.

À partir de 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 vous assurer que votre application fonctionne sur tous les Chromebooks, mettez à jour votre fichier manifeste afin 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 appareil est équipé de différents ensembles de capteurs, et les Chromebooks peuvent ne pas posséder tous les capteurs des appareils mobiles Android, tels que le GPS et les accéléromètres. Toutefois, dans certains cas, la fonctionnalité d'un capteur est fournie d'une autre manière. Par exemple, les Chromebooks n'ont peut-être pas de capteurs GPS, mais ils fournissent 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 s'exécute sur les Chromebooks, quelle que soit la disponibilité des capteurs, mettez à jour votre fichier manifeste afin qu'aucun capteur ne soit nécessaire.

Certaines fonctionnalités logicielles ne sont pas compatibles avec les Chromebooks. Par exemple, les applications qui fournissent des IME, des widgets d'application, des fonds d'écran animés et des lanceurs d'applications personnalisés ne sont pas compatibles et ne peuvent pas être installées sur les Chromebooks. Pour obtenir la liste complète des fonctionnalités logicielles non compatibles avec les Chromebooks, consultez la section Fonctionnalités logicielles incompatibles.

Mettre à jour votre SDK cible

Mettez à jour l'attribut targetSdkVersion de votre application vers le dernier niveau d'API disponible pour bénéficier de toutes les améliorations de la plate-forme Android. Examinez les améliorations apportées à la plate-forme Android dans les différentes versions.

Vérifier la configuration réseau requise

Les Chromebooks exécutent l'intégralité de l'OS Android dans un conteneur, semblable à 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'adresses réseau (NAT), et le trafic de monodiffusion IPv6 est acheminé via un saut supplémentaire.

Les connexions unicast sortantes d'une application Android vers Internet fonctionnent principalement telles quelles. En général, les connexions entrantes sont bloquées. Les paquets de multidiffusion ou de diffusion depuis Android ne sont pas transférés vers le réseau local via le pare-feu.

À l'exception de la restriction de multidiffusion, ChromeOS exécute un service qui transfère le trafic mDNS entre Android et l'interface LAN. Il est donc recommandé d'utiliser les API standards de détection de services réseau pour détecter d'autres appareils sur le segment LAN. Après avoir trouvé un appareil sur le LAN, une application Android peut utiliser des sockets unicast TCP ou UDP standards pour communiquer avec lui.

Les connexions IPv4 provenant d'Android utilisent l'adresse IPv4 de l'hôte ChromeOS. En interne, l'application Android voit 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 passer 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 sur plusieurs appareils. Toutefois, ne dépendez pas d'une connexion Internet pour que votre application fonctionne normalement. À la place, enregistrez le travail de l'utilisateur localement lorsque l'appareil est hors connexion, puis synchronisez-le avec le cloud une fois l'appareil de nouveau connecté.

Les Chromebooks peuvent également être partagés par un grand nombre de personnes, par exemple dans les écoles. Étant donné que le stockage local n'est pas infini, des comptes entiers, ainsi que leur espace de stockage, peuvent être supprimés de l'appareil à tout moment. Dans un cadre pédagogique, nous vous conseillons de garder ce scénario à l'esprit.

Mettre à jour les bibliothèques NDK

Si votre application utilise les bibliothèques NDK Android et que la version de SDK cible est 23 ou ultérieure, assurez-vous que les déplacements de texte sont supprimés des versions ARM et x86 de vos bibliothèques NDK, car elles ne sont pas compatibles avec Android 6.0 (niveau d'API 23) ou version ultérieure. Si vous laissez les déplacements de texte dans vos bibliothèques NDK, vous risquez également de provoquer des erreurs de compatibilité avec les Chromebooks, en particulier lorsque vous les exécutez sur un appareil utilisant une architecture x86.

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 fichier manifeste appropriés. En particulier, envisagez de définir screenOrientation sur unspecified. Si vous souhaitez spécifier une orientation paysage, envisagez d'utiliser sensorLandscape pour vous assurer que l'expérience sur tablette est optimale.

Si vous avez des besoins particuliers en termes de taille ou d'orientation pour les environnements de bureau, envisagez d'ajouter des balises Meta en tant qu'indications 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 une gestion spécifique des périphériques d'entrée pour des catégories d'appareils spécifiques, spécifiez android.hardware.type.pc pour désactiver le mode de compatibilité d'entrée.

Si vous utilisez n'importe quel type de réseau, assurez-vous que l'application peut s'y reconnecter après la résolution d'un problème de connexion ou une fois que l'appareil sort du mode veille.

Nous vous recommandons de consulter la liste des scénarios de test pour les applications Android sous Chrome OS, que vous pouvez utiliser dans votre plan de test. Les scénarios de test couvrent des scénarios courants auxquels les applications Android doivent être préparées si elles sont destinées à s'exécuter sur des appareils ChromeOS.

Modes multifenêtre et changements d'orientation

L'environnement multifenêtre de ChromeOS peut rendre les problèmes de persistance et de rappel de l'état plus évidents. Utilisez ViewModel pour enregistrer et restaurer votre état, le cas échéant.

Pour tester la persistance de l'état, réduisez votre application pendant un certain temps, démarrez un autre processus gourmand en ressources, puis restaurez votre application pour vérifier qu'elle revient à l'état dans lequel vous l'avez laissée.

Testez le redimensionnement de la fenêtre en appuyant sur la touche plein écran (F4), en agrandissant et en restaurant. Pour tester le redimensionnement libre, commencez par l'activer dans les options pour les développeurs, puis vérifiez que votre application est redimensionnée de manière fluide sans plantage.

Si votre appareil ChromeOS le permet, passez du mode ordinateur portable au mode tablette pour vérifier que tout fonctionne comme prévu. Faites pivoter l'appareil une fois en mode tablette pour tester les changements d'orientation, puis revenez en mode ordinateur portable. Répétez cette étape plusieurs fois.

Assurez-vous que la barre supérieure n'interrompt pas votre application en décalant les éléments d'interface utilisateur ou la saisie tactile basée sur la position. Pour les appareils ChromeOS, assurez-vous 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 qu'il se comporte correctement lorsque vous effectuez les modifications de fenêtre et d'appareil décrites précédemment.