Per Android 11 o versioni successive, i moduli di assistenza per l'interazione con il dispositivo del Compatibility Test Suite (CTS) ti consentono di personalizzare il modo in cui determinati test CTS interagiscono con l'interfaccia utente (UI) su un dispositivo specifico. Ciò significa che le azioni, come la sostituzione di un elemento dell'interfaccia utente non contemplata dal documento Android Compatibility Definition Document (CDD) o dalla documentazione delle API, possono essere eseguite durante la trasmissione del CTS.
Gli OEM che vogliono personalizzare l'interfaccia utente di Android durante lo sviluppo del prodotto e devono superare il CTS potrebbero essere in grado di implementare moduli di assistenza. Se utilizzi l'implementazione predefinita di Android, non è necessario alcun intervento aggiuntivo.
Implementazione di moduli di supporto
Requisiti per personalizzare l'UI
Controlla i moduli CDD o Mainline per verificare eventuali requisiti UI. Se l'interfaccia utente che ti interessa è coperta dai moduli CDD o Mainline, non può essere personalizzata.
Se i test CTS che interagiscono con l'interfaccia utente desiderata non utilizzano il framework di helper, l'interfaccia utente non può essere personalizzata. Collabora con il proprietario del test per convertire il modulo di test prima che sia possibile modificare l'interfaccia utente.
In caso contrario, puoi personalizzare l'interfaccia utente.
Flusso di lavoro di implementazione
- Personalizza l'interfaccia utente in base alle esigenze del tuo prodotto specifico.
- Designa i moduli di assistenza AOSP esistenti come sottoclassi per i moduli di test CTS che devono interagire con l'interfaccia utente. Sostituisci le interazioni necessarie in modo appropriato per l'interfaccia utente personalizzata. Le sostituzioni variano in base al tipo di modifiche.
- Le sottoclassi OEM si trovano in un pacchetto OEM, ad esempio
com.[oem].cts.helpers
. - Ogni sottoclasse OEM è denominata con un prefisso comune che la distingue
dall'implementazione AOSP, che ha il prefisso
Default
.
- Le sottoclassi OEM si trovano in un pacchetto OEM, ad esempio
- Crea gli helper in un APK seguendo queste convenzioni per i runner di test.
Android.bp
deve dichiarareandroid_test_helper_app
con lo stesso nome del pacchetto contenuto.AndroidManifest.xml
per l'APK deve dichiarare una proprietà di metadati denominatainteraction-helpers-prefix
con il valore del prefisso della classe scelto nel punto elenco precedente.- L'app deve dipendere da
cts-helpers-core
,cts-helpers-interfaces
ecom.android.cts.helpers.aosp
. Se gli helper OEM implementano completamente tutte le interfacce pertinenti,com.android.cts.helpers.aosp
è facoltativo.
- Imposta la proprietà
ro.vendor.cts_interaction_helper_packages
nell'immagine del dispositivo in modo da includere il nome dell'APK. Se devi separare le implementazioni degli helper in più APK, questa proprietà può contenere un elenco di pacchetti separati da due punti. - Assicurati che l'APK sia disponibile nella directory
testcases
quando viene eseguito Tradefed for CTS. Se necessario, verifica che sia stata scelta la classe di implementazione dell'helper prevista esaminando i messaggi di logcat. - (Facoltativo, ma vivamente consigliato) Invia l'implementazione dell'helper ad AOSP o rendila disponibile per i test di terze parti.
Esempio di implementazione di un helper
Ad esempio, CtsPrintTestCases
prevede un helper con l'interfaccia definita
in ICtsPrintHelper
. L'implementazione AOSP si chiama
com.android.cts.helpers.aosp.DefaultCtsPrintHelper
.
Se personalizzi l'interfaccia utente di stampa, puoi creare com.oem.cts.helpers.OemCtsPrintHelper
che è una sottoclasse di DefaultCtsPrintHelper
.
android_test_helper_app
in Android.bp
è denominato com.oem.cts.helpers
,
che produce com.oem.cts.helpers.apk
,
e dichiara interaction-helpers-prefix
come Oem
in AndroidManifest.xml
.
La proprietà del dispositivo ro.vendor.cts_interaction_helper_packages
è impostata su com.oem.cts.helpers
.
Implementazioni di riferimento
Le implementazioni di riferimento includono le interfacce in cts/libs/helpers
e gli annunci di assistenza AOSP predefiniti in cts/helpers
. L'interfaccia di primo livello è documentata
in
cts/libs/helpers/core/src/com/android/cts/helpers/ICtsDeviceInteractionHelper.java
.
Per collegare il test CTS ai relativi helper, i proprietari dei test possono utilizzare la definizione @Rule
documentata in
cts/libs/helpers/core/src/com/android/cts/helpers/DeviceInteractionHelperRule.java
.
Ogni modulo CTS che utilizza il framework e il comportamento previsto dell'helper è documentato in un'interfaccia definita in cts/libs/helpers/core/src/com/android/cts/helpers
.
Esecuzione di test CTS
Test senza assistenti
A parte una proprietà, l'opzione per eseguire test senza helper non esiste in fase di runtime sul dispositivo, ma modifica facoltativamente il modo in cui i test CTS interagiscono con il dispositivo. Se devi eseguire CTS senza le implementazioni di helper, hai due opzioni:
- Rimuovi la proprietà
ro.vendor.cts_interaction_helper_packages
dal dispositivo. In questo modo, gli aiuti non vengono utilizzati completamente nella build. - Rimuovi l'APK helper dalla directory
testcases
prima di eseguire CTS. In questo modo, gli helper non possono essere utilizzati da nessuna esecuzione finché l'APK non viene ripristinato intestcases
.
Puoi modificare le impostazioni predefinite con gli argomenti Tradefed e il controllo della proprietà ro.vendor.cts_interaction_helper_packages
, da cui viene caricato l'APK helper.
Di seguito sono riportati i valori o gli intervalli previsti per ciascuna delle impostazioni disponibili.
ro.vendor.cts_interaction_helper_packages
è una stringa separata da due punti contenente i nomi dei pacchetti. Può assumere qualsiasi valore che sia una scelta di pacchetti valida per l'implementazione dell'helper dell'OEM.cts-tradefed
accetta un argomentodevice-interaction-helper:property-name
che cambia temporaneamente la proprietà prevista per un'esecuzione di test, ad esempio--module-arg 'CtsPrintTestCases:{device-interaction-helper}property-name:debug.cts.hlp'
. Il valore del nome della proprietà può essere qualsiasi proprietà impostata sul dispositivo. Il valore della proprietà segue le stesse limitazioni della proprietàro.vendor.cts_interaction_helper_packages
descritta sopra.
Test con personalizzazioni
Per impostazione predefinita, le implementazioni di riferimento superano il CTS su Android stock. Verifica che le implementazioni dei partner superino i CTS con personalizzazioni dell'interfaccia utente. Esegui i moduli CTS che coprono l'interfaccia utente o le funzionalità che hai personalizzato.
Alcuni moduli CTS o helper potrebbero non supportare ancora alcune personalizzazioni.
- Un modulo CTS che interagisce con l'interfaccia utente che vuoi personalizzare potrebbe non utilizzare il framework di assistenza. I moduli CTS dovrebbero essere convertiti nel framework di supporto in base alla domanda e alle priorità del proprietario del test. Invia le richieste di conversione all'inizio della procedura per assicurarti che la conversione venga pianificata, in modo simile alla richiesta di modifiche CTS per supportare le funzionalità pianificate.
- Le funzioni fornite da un helper esistente potrebbero non soddisfare completamente le personalizzazioni che vuoi apportare. Le funzioni helper devono astrarre le dipendenze UI. Se una funzione di supporto ha indirettamente una dipendenza dall'interfaccia utente, questo può essere trattato in modo simile ai bug in CTS.