CTS pour les applications instantanées

Les applications instantanées sont une fonctionnalité clé de 10, il est donc essentiel qu'elles fonctionnent correctement. Les applications instantanées sont implicitement installées, elles disposent donc d'un ensemble restreint de fonctionnalités et s'exécutent dans un bac à sable de sécurité plus restrictif. En raison de la nature omniprésente de ces restrictions, n'importe quelle partie du système risque de ne pas fonctionner correctement avec les applications instantanées. Un sous-ensemble de tests CTS est créé pour garantir que les comportements autorisés par les applications instantanées fonctionnent. L'idée clé est de minimiser la croissance de la taille de CTS en isolant l'ensemble minimal de tests à porter. L'exécution de CTS en mode Applications instantanées signifie installer l'APK de test en tant qu'application instantanée et exécuter les tests.

Restrictions des applications instantanées

Les applications instantanées ne sont pas installées par l'utilisateur. Elles s'exécutent donc dans un bac à sable restreint avec les restrictions suivantes :

  • Ne peut détenir que certaines autorisations.
  • Impossible de voir d'autres applications, sauf si ces applications sont marquées comme visibles pour les applications instantanées.
  • Peut accéder uniquement à certains paramètres du système.
  • Peut accéder uniquement à certaines propriétés du système.
  • Impossible d'exposer les services/fournisseurs.
  • Peut recevoir et envoyer avec des règles spéciales concernant les diffusions.

De plus, les applications instantanées doivent autoriser le nouveau bac à sable de sécurité à ajouter davantage de restrictions. Ce large éventail de comportements spéciaux autour des applications instantanées s'étend à l'ensemble de la plate-forme. Il doit donc y avoir un moyen de valider que les applications instantanées fonctionnent comme prévu pour tous les appareils de l'écosystème.

Tests exécutés en mode Applications instantanées

Tous les modules CTS ne disposent pas de tests applicables aux applications instantanées. Si la fonctionnalité testée par le module interagit avec le serveur système, ces tests doivent être exécutés en mode Instant Apps. Par exemple, les tests OpenGL n'interagissent pas avec le serveur système et il n'est donc pas nécessaire de les exécuter en mode Instant Apps tandis que les tests d'accessibilité interagissent avec le serveur système, mais il est nécessaire de les exécuter en mode Instant Apps.

En plus d'identifier les modules applicables, les utilisateurs doivent déterminer quels tests de ces modules sont pertinents. Par exemple, le test des comportements spécifiques à un service pour une architecture enfichable (par exemple, AccessibilityService) n'est pas applicable au mode Instant App, car les applications instantanées ne peuvent pas exposer les services à d'autres applications (y compris la plate-forme), tandis que les tests validant les comportements côté application sont applicable au mode Applications instantanées. Un autre exemple est qu'un test qui valide les comportements derrière une autorisation qu'une application instantanée ne peut pas détenir n'est pas pertinent en mode application instantanée. Il existe un ensemble de tests qui s'appliquent uniquement aux applications instantanées et qui valident les règles relatives à leur comportement, par exemple, ne pas exposer les services ou ne pas voir d'autres applications. Généralement, ceux-ci sont déjà écrits et ne nécessitent pas de portage.

Échecs des tests en mode Applications instantanées

Si le test échoue parce qu’il valide une fonctionnalité à laquelle Instant Apps ne peut pas accéder, il n’est pas applicable en mode Instant Apps. Marquez le test pour qu'il s'exécute uniquement en mode Full App en l'annotant avec @AppModeFull . Vous pouvez appliquer cette annotation au niveau de la classe pour en exclure tous les tests.

Si le test échoue parce que certaines fonctionnalités accessibles aux applications instantanées sont interrompues, signalez un bug .

Dépannage

Si votre test échoue avec Failed to install MyCtsModule.apk on DEVICE. Raison : '-116' , recherchez les messages PackageManager sur logcat. Par exemple, s'il est indiqué Can't replace Full App with Instant App: your_app , alors adb désinstalle d'abord votre application.