Le app istantanee sono una funzionalità chiave di Android 10, quindi è essenziale che funzionino correttamente. Le app istantanee vengono installate in modo implicito, 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 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 può 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.
- Può ricevere e inviare con regole speciali per le trasmissioni.
Inoltre, le app istantanee devono attivare la nuova sandbox di sicurezza per consentire l'aggiunta di 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 verifica che i comportamenti alla base di un'autorizzazione che un'app istantanea non può avere non siano 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 classe per escludere tutti
i test al suo interno.
Se il test non va a buon fine perché alcune funzionalità accessibili alle app istantanee non sono disponibili, segnala un bug.
Risoluzione dei problemi
Se il test non va a buon fine con il messaggio Impossibile installare MyCtsModule.apk su DEVICE. Motivo: "-116", cerca i messaggi di PackageManager in 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.