Testa il backup

  
Framework di test automatico per verificare che i dati utente e le credenziali dell'account sopravvivano in sicurezza agli upgrade del dispositivo e ai ripristini dal cloud.
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
21 ottobre 2026 - - - 1.0.0-alpha03

Dichiara le dipendenze

Per aggiungere una dipendenza dal backup di test, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    implementation "androidx.test.backup:backup:1.0.0-alpha03"
    implementation "androidx.test.backup:backup-host:1.0.0-alpha03"
}

Kotlin

dependencies {
    implementation("androidx.test.backup:backup:1.0.0-alpha03")
    implementation("androidx.test.backup:backup-host:1.0.0-alpha03")
}

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per saperne di più, consulta la documentazione di Issue Tracker.

Test di ripristino del backup automatico versione 1.0

Versione 1.0.0-alpha03

21 ottobre 2026

androidx.test.backup:backup:1.0.0-alpha03 e androidx.test.backup:backup-host:1.0.0-alpha03 sono state rilasciate. La versione 1.0.0-alpha03 contiene questi commit.

Nuove funzionalità

  • Configurazione semplificata dei test nelle suite di test di backup del plug-in Android per Gradle, con targeting automatico dell'app testata quando @BackupRestoreConfig viene omesso. (I1452b)
  • È stato aggiunto il supporto per l'ereditarietà delle impostazioni @BackupRestoreConfig e @Isolation da una classe di test esterna nelle classi di test @Nested. (Ia45a8)
  • È stato aggiunto il supporto per l'inserimento di BackupRestoreController direttamente nei costruttori delle classi di test e nei metodi di configurazione @BeforeAll. (I6e822, Ia2ebd)
  • È stato aggiunto il supporto per l'assegnazione di un dispositivo specifico a un ruolo @Device nei test multi-dispositivo utilizzando la proprietà androidx.test.backup.device.serial.{role}. (I484be)

Correzioni di bug

  • Risolti i problemi relativi a performBackup e performRestore in modo che i test non vadano a buon fine immediatamente anziché essere superati senza problemi quando un backup viene saltato o è vuoto, quando il servizio di supporto genera un errore o quando un archivio di backup locale appartiene a un'altra app o un altro dispositivo. (I7673d, I478ad, I0b989, I9a0ea, I79567)
  • Risolto il problema dei test che si bloccavano a tempo indeterminato su dispositivi che non rispondevano applicando timeout alle fasi di backup, ripristino, azioni del dispositivo e pulizia. (I10661, I9cdee, If5f92)
  • È stato risolto il problema relativo all'eliminazione da parte di performBackup dei file di backup generati al termine dell'esecuzione del test, pertanto gli archivi di backup vengono ora conservati sul disco dopo l'uscita dai test. (I8c13f)
  • Sono stati corretti gli helper di test del database (StorageDomain.Database) per archiviare e controllare correttamente i valori null, sovrascrivere le righe esistenti durante il seeding dei dati di test, rilevare tempestivamente le configurazioni delle tabelle non valide e generare un errore quando manca un file di database previsto. (Ib4767, Iddf87, I19c43, Ie8d78, I8bc18)
  • Sono stati corretti gli helper di test SharedPreferences per preservare accuratamente i tipi di dati e supportare il controllo delle preferenze null o rimosse. (I8456d9, I1d0fc2)
  • È stato corretto runOnDevice per gestire payload di test di grandi dimensioni senza arresti anomali, mettere in pausa il debugger quando waitForDebugger è attivo, trovare l'esecutore di test nei nomi dei pacchetti APK di test personalizzati e impedire che i flag dell'esecutore interno vengano divulgati nelle azioni del dispositivo. (Ic73bd, Iede17, I1d172, I84c15)
  • Abbiamo migliorato la stabilità e la velocità dei test condividendo una singola connessione ADB durante l'esecuzione del test, installando gli APK una sola volta per dispositivo e segnalando chiaramente quando un APK non viene installato o avviato. (I62717, Iabf75, I14e6f, I4c3da5, I54077, Iee84e)
  • Risolto il problema relativo alla scrittura di file di log vuoti da parte di fetchDeviceLogs e interrotta la generazione di report di errore falsi da parte delle esecuzioni di test annullate. (I736c4, I7b199, Ia847e)
  • Sono state ripulite le dipendenze di backup-host in modo che adblib sia disponibile direttamente per i chiamanti e le librerie di test o di logging interno non entrino più in conflitto con il classpath del progetto. (I6e822, Iba9a4, Ib4ec9)

Versione 1.0.0-alpha02

7 ottobre 2026

androidx.test.backup:backup:1.0.0-alpha02 e androidx.test.backup:backup-host:1.0.0-alpha02 sono state rilasciate. La versione 1.0.0-alpha02 contiene questi commit.

Modifiche alle API

  • Le chiavi del payload sono ora documentate come BackupActionInputKeys, BackupActionOutputKeys e BackupActionValues, sostituendo le costanti su BackupDeviceAction. Sono state aggiunte le factory BackupDeviceActionResult.success() e failure(), insieme agli accessor isSuccess e errorMessage. (Ibd493)

Correzioni di bug

  • BackupRestoreController.clearAppData ora genera IOException quando pm clear non segnala l'esito positivo, anziché continuare in modo silenzioso. (I61556)
  • Gli argomenti della shell passati a BackupRestoreController per l'esecuzione del dispositivo ora vengono sottoposti correttamente a escape per impedire il command injection e garantire che i percorsi dei file con spazi vengano gestiti in modo sicuro.
  • Sono state rafforzate le azioni di archiviazione in bundle (PopulateStorageAction e AssertStorageAction) contro i passaggi di verifica silenziosi per garantire che i test non vadano a buon fine quando mancano i dati previsti.
  • Gli orchestratori di test lato host ora rispettano correttamente gli errori delle azioni in-band segnalati dal dispositivo anziché ignorarli.
  • Risolto un problema relativo al popolamento delle righe del database mediante la codifica percentuale del formato di rete 'values' del database, impedendo il danneggiamento dei dati durante il trasporto del payload.
  • Sono state risolte le vulnerabilità di sicurezza in androidx.test.backup:backup-host eseguendo l'upgrade delle dipendenze.

Versione 1.0.0-alpha01

23 settembre 2026

androidx.test.backup:backup:1.0.0-alpha01 e androidx.test.backup:backup-host:1.0.0-alpha01 sono state rilasciate. La versione 1.0.0-alpha01 contiene questi commit.

Funzionalità della release iniziale

Rilascio iniziale del framework di test di backup e ripristino automatici per Android. Questa libreria fornisce un modo automatizzato ed end-to-end per verificare che i dati utente e le credenziali dell'account sopravvivano in sicurezza agli upgrade del dispositivo e ai ripristini dal cloud. Anziché affidarsi ai test manuali, gli sviluppatori possono automatizzare l'intero ciclo di vita: seeding dello stato dell'app, backup in base alle regole configurate (dataExtractionRules e fullBackupContent), cancellazione dell'app e verifica dell'integrità dei dati dopo il ripristino. Il framework fornisce due artefatti: androidx.test.backup:backup-host (che viene eseguito sul computer host per orchestrare le fasi di backup, cancellazione e ripristino su ADB) e androidx.test.backup:backup (che viene eseguito sul dispositivo per compilare e verificare i dati dell'app).

  • BackupRestoreController: l'interfaccia principale lato host utilizzata per controllare i workflow di backup, cancellazione, ripristino e verifica per un dispositivo di test. Fornisce pipeline di convenienza come runBackupRestoreFlow, nonché operazioni granulari (performBackup, performRestore, clearAppData, fetchDeviceLogs e runOnDevice). Supporta sia le coroutine Kotlin sia l'esecuzione asincrona di Java ListenableFuture.
  • BackupRestoreExtension: un'estensione JUnit 5 Jupiter che risolve e inserisce i parametri BackupRestoreController nei metodi di test. Gestisce le sessioni ADB autonome o condivise, installa automaticamente gli APK testati e di test, ignora le schermate di blocco e i blocchi tastiera dei dispositivi per sbloccare lo spazio di archiviazione protetto da credenziali e applica l'isolamento della sandbox di test.
  • BackupRestoreTestRunner: un test runner Instrumentation on-device in esecuzione all'interno della sandbox dell'applicazione. Risolve ed esegue dinamicamente le implementazioni BackupDeviceAction richieste inviate dagli orchestratori host e reindirizza in modo sicuro i payload dei risultati JSON di grandi dimensioni al disco per evitare i limiti del buffer delle transazioni di Binder.
  • BackupDeviceAction: il contratto per le azioni personalizzate lato dispositivo eseguite direttamente nella sandbox dell'applicazione di destinazione durante il seeding dei dati (PHASE_POPULATE) o la convalida post-ripristino (PHASE_VERIFY).
  • StorageDomain: descrittori con tipizzazione forte (Preference, Database, TextFile e BinaryFile) utilizzati insieme ad helper di azioni predefiniti (PopulateStorageAction e AssertStorageAction) per eseguire automaticamente il seeding e l'asserzione di SharedPreferences, database SQLite e file non elaborati in contesti di archiviazione Credential Protected (CE) e Device Protected (DE) senza boilerplate.
  • BackupTransportMode: specifica la topologia di trasporto del backup della piattaforma da simulare durante le fasi di test, tra cui DEVICE_TO_DEVICE (migrazione del dispositivo fisico tramite USB o Wi-Fi Direct), CLOUD_ENCRYPTED (backup sul cloud con crittografia end-to-end lato client), CLOUD_UNENCRYPTED (backup sul cloud standard) e LOCAL (backup del file system locale offline).
  • @Device e @Isolation: annotazioni host per la selezione dei dispositivi connessi corrispondenti a numeri di serie, livelli API o ruoli multi-dispositivo specifici e per la configurazione delle policy di isolamento della sandbox tra le esecuzioni dei test (IsolationPolicy.AUTOMATIC e IsolationPolicy.MANUAL).