Le app istantanee sono una funzionalità chiave di Android 10, quindi è essenziale che funzionino correttamente. Le app istantanee sono installate implicitamente, perciò hanno un insieme limitato di funzionalità ed vengono eseguite in una sandbox per la sicurezza più restrittiva. A causa della natura pervasiva di queste restrizioni, qualsiasi parte del sistema è a rischio 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 di base è ridurre al minimo l'aumento delle dimensioni della CTS isolando il set minimo di test da eseguire. L'esecuzione di CTS in modalità App istantanee comporta l'installazione dell'APK di test come app istantanea ed esecuzione dei test.
Limitazioni delle app istantanee
Le app istantanee non vengono installate dall'utente, pertanto vengono eseguite in una sandbox con limitazioni, tra cui:
- Può contenere solo determinate autorizzazioni.
- Non potrà vedere altre app, a meno che non siano contrassegnate come visibili alle app istantanee.
- Può accedere solo a determinate impostazioni di sistema.
- Può accedere solo a determinate proprietà di sistema.
- Impossibile esporre servizi/fornitori.
- Può ricevere e inviare con regole speciali per le trasmissioni.
Inoltre, le app istantanee devono attivare la possibilità per la nuova sandbox di sicurezza di aggiungere altre limitazioni. Questa vasta gamma di comportamenti speciali relativi alle app istantanee interessa tutta la piattaforma, quindi è necessario un modo per verificare che le app istantanee funzionino come previsto su tutti i dispositivi dell'ecosistema.
Test in esecuzione 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à App istantanee. Ad esempio, i test OpenGL non interagiscono con il server di sistema, pertanto non è necessario eseguirli in modalità App istantanee, mentre i test di accessibilità interagiscono con il server di sistema, pertanto è necessario eseguirli in modalità App istantanee.
Oltre a identificare i moduli applicabili, gli utenti devono determinare quali test in questi moduli sono pertinenti. Ad esempio, i test dei comportamenti specifici del servizio per un'architettura pluggable (ad esempio AccessibilityService) non sono applicabili alla modalità Instant App perché le app istantanee non possono esporre servizi ad altre app (inclusa la piattaforma), mentre i test di convalida dei comportamenti lato app sono applicabili alla modalità Instant App. Un altro esempio è un test che convalida i comportamenti alla base di un'autorizzazione che un'app istantanea non può contenere non sono pertinenti 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, sono già scritti e non richiedono il porting.
Errori di test in modalità App istantanee
Se il test non va a buon fine perché convalida funzionalità a cui le app istantanee non possono accedere, non è applicabile in modalità App istantanee. Contrassegna il test in modo che venga eseguito 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 va a buon fine perché alcune funzionalità accessibili alle app istantanee non funzionano, segnala un bug.
Risoluzione dei problemi
Se il test non va a buon fine e restituisce il messaggio Impossibile installare MyCtsModule.apk su DEVICE. Motivo: "-116", cerca i messaggi PackageManager su logcat. Ad esempio, se viene visualizzato il messaggio Impossibile sostituire l'app completa con l'app istantanea: your_app, disinstalla prima l'app con adb.