Le app istantanee sono una funzionalità chiave di Android 10, quindi è essenziale che funzionino correttamente. Le app istantanee vengono installate implicitamente, quindi hanno un insieme limitato di funzionalità e vengono eseguite in una sandbox di sicurezza più restrittiva. A causa della natura pervasiva di queste restrizioni, qualsiasi parte del sistema rischia di non funzionare correttamente con le app istantanee. Viene creato un sottoinsieme di test CTS per garantire che i comportamenti consentiti dalle app istantanee funzionino. L'idea principale è ridurre al minimo la crescita delle dimensioni di CTS isolando l'insieme minimo di test da trasferire. L'esecuzione di CTS in modalità app istantanea comporta l'installazione dell'APK di test come app istantanea e l'esecuzione dei test.
Restrizioni delle app istantanee
Le app istantanee non vengono installate dall'utente, quindi vengono eseguite in una sandbox con le seguenti restrizioni:
- Possono contenere solo determinate autorizzazioni.
- Non possono vedere altre app a meno che non siano contrassegnate come visibili alle app istantanee.
- Possono accedere solo a determinate impostazioni di sistema.
- Possono accedere solo a determinate proprietà di sistema.
- Non possono esporre servizi/provider.
- Possono ricevere e inviare con regole speciali per le trasmissioni.
Inoltre, le app istantanee devono attivare la nuova sandbox di sicurezza per aggiungere ulteriori restrizioni. 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 istantanea
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à app istantanea. Ad esempio, i test OpenGL non interagiscono con il server di sistema, quindi non è necessario eseguirli in modalità app istantanea, mentre i test di accessibilità interagiscono con il server di sistema, quindi è necessario eseguirli in modalità app istantanea.
Oltre a identificare i moduli applicabili, gli utenti devono determinare quali test in questi moduli sono pertinenti. Ad esempio, il test dei comportamenti specifici del servizio per un'architettura plug-in (ad esempio, AccessibilityService) non è applicabile alla modalità app istantanea, poiché 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à app istantanea. Un altro esempio è un test che convalida i comportamenti dietro un'autorizzazione che un'app istantanea non può avere e che non è pertinente in modalità app istantanea. Esiste un insieme 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 vedere altre app. In genere, questi test sono già scritti e non richiedono il trasferimento.
Errori di test in modalità app istantanea
Se il test non riesce perché convalida una funzionalità a cui le app istantanee non possono accedere, non è applicabile in modalità app istantanea. Contrassegna il test da eseguire solo in modalità app completa annotandolo con @AppModeFull. Puoi applicare questa annotazione a livello di classe 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 riesce con Failed to install MyCtsModule.apk on DEVICE. Reason: '-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.