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 s'adresse aux développeurs ayant une application Android conçue pour les téléphones et tablettes qu'ils souhaitent optimiser pour les Chromebooks. Pour découvrir les principes de base 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 clés 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 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. Il est possible que les Chromebooks ne disposent pas de tous les capteurs que l'on trouve sur les appareils Android portables, comme 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 actuellement incompatibles avec les Chromebooks, consultez la page sur les 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 les exigences de mise en réseau

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 le réseau 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.

À titre d'exception à la restriction de multicast, ChromeOS exécute un service qui transfère le trafic mDNS entre Android et l'interface LAN. Par conséquent, les API standards de détection de services réseau sont la méthode recommandée pour détecter d'autres appareils sur le segment LAN. Une fois qu'elle a trouvé un appareil sur le réseau LAN, une 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 n'utilisent pas l'adresse 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 à utiliser un autre, il lui suffit de se connecter pour retrouver toutes ses applications.

Grâce à cette fonctionnalité, sauvegardez les données de votre application dans le cloud pour permettre la synchronisation entre les appareils. Toutefois, ne dépendez pas d'une connexion Internet pour que votre application fonctionne normalement. Enregistrez plutôt 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, nous vous recommandons d'utiliser sensorLandscape pour assurer une expérience optimale sur tablette.

Si vous avez des exigences particulières concernant la taille ou l'orientation pour les environnements de bureau, envisagez d'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 pour 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 est capable de 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 couvrent de nombreux cas fréquents pour lesquels les applications Android doivent être préparées si elles sont destinées à fonctionner sur des appareils ChromeOS.

Modifications multifenêtre et 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 si nécessaire.

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, activez-le d'abord 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 vous assurer que tout fonctionne correctement. Faites pivoter l'appareil une fois qu'il est 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 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 d'autres fonctionnalités matérielles (comme un 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.