CTS per le app istantanee

Le app istantanee sono una funzionalità chiave di Android 10, quindi è essenziale che funzionino correttamente. Le app istantanee vengono installate implicitamente, pertanto hanno un insieme limitato di funzionalità e vengono eseguite in una sandbox di sicurezza più restrittiva. A causa della natura pervasiva di queste limitazioni, qualsiasi parte del sistema rischia di non funzionare correttamente con le app istantanee. Viene creato un sottoinsieme di test CTS per garantire il funzionamento dei comportamenti consentiti dalle app istantanee. L'idea chiave è ridurre al minimo la crescita delle dimensioni di CTS isolando il set minimo di test da trasferire. L'esecuzione di CTS in modalità app istantanee prevede l'installazione dell'APK di test come app istantanea e l'esecuzione dei test.

Limitazioni delle app istantanee

Le app istantanee non vengono installate dall'utente, quindi vengono eseguite in una sandbox con le seguenti limitazioni:

  • Può detenere solo determinate autorizzazioni.
  • Non riesci a vedere altre app, a meno che non siano contrassegnate come visibili per le app istantanee.
  • Può accedere solo a determinate impostazioni di sistema.
  • Può accedere solo a determinate proprietà di sistema.
  • Impossibile esporre servizi/fornitori.
  • Possono ricevere e inviare messaggi con regole speciali relative alle trasmissioni.

Inoltre, le app istantanee devono attivare l'autorizzazione per consentire alla nuova sandbox di sicurezza di aggiungere ulteriori limitazioni. Questa vasta gamma di comportamenti speciali relativi alle app istantanee interessa l'intera piattaforma, quindi è necessario un modo per verificare che le app istantanee funzionino come previsto per tutti i dispositivi dell'ecosistema.

Test eseguiti in modalità App istantanee

Non tutti i moduli CTS hanno test applicabili alle app istantanee. Se la funzionalità testata dal modulo interagisce con il server di sistema, questi test devono essere eseguiti in modalità Instant Apps. Ad esempio, i test OpenGL non interagiscono con il server di sistema, quindi non è necessario eseguirli in modalità Instant Apps, mentre i test di accessibilità interagiscono con il server di sistema, quindi è necessario eseguirli in modalità Instant Apps.

Oltre a identificare i moduli applicabili, gli utenti devono determinare quali test in questi moduli sono pertinenti. Ad esempio, il test di comportamenti specifici del servizio per un'architettura plug-in (ad esempio, AccessibilityService) non è applicabile alla modalità Instant Apps in quanto le app istantanee non possono esporre servizi ad altre app (inclusa la piattaforma), mentre i test che convalidano i comportamenti lato app sono applicabili alla modalità Instant Apps. Un altro esempio è un test che convalida i comportamenti alla base di un'autorizzazione che un'app istantanea non può detenere non sono pertinenti in modalità app istantanea. Esiste una serie di test che si applicano solo alle app istantanee e che convalidano le regole relative al loro comportamento, ad esempio non esporre servizi o non visualizzare altre app. In genere, sono già scritti e non richiedono il porting.

Errori di test in modalità app istantanee

Se il test non riesce perché convalida funzionalità a cui le app istantanee non possono accedere, allora non è applicabile in modalità app istantanee. Contrassegna il test da eseguire solo in modalità App completa annotandolo con @AppModeFull. Puoi applicare questa annotazione a livello di corso per escludere tutti i test al suo interno.

Se il test non riesce perché alcune funzionalità accessibili alle app istantanee non funzionano, segnala un bug.

Risoluzione dei problemi

Se il test non va a buon fine e viene visualizzato il messaggio Failed to install MyCtsModule.apk on DEVICE. Motivo: "-116", cerca i messaggi di PackageManager in LogCat. Ad esempio, se viene visualizzato il messaggio Can't replace Full App with Instant App: your_app, disinstalla prima l'app con adb.