Varmuuskopioi käyttäjätiedot automaattisella varmuuskopioinnilla
sovellusten automaattinen Varmuuskopiointi Varmuuskopioi automaattisesti käyttäjän tiedot kohteista ja toimii Android 6.0: lla (API-taso 23) tai uudemmalla. Android säilyttää appdatan lataamalla sen käyttäjän Google Driveen-jossa se on suojattu käyttäjän Google-tilin tunnuksilla. Tietojen määrä on rajoitettu 25MB peruser sovelluksen ja ei ole maksua tallentamisesta varmuuskopiotiedot. Sovelluksesi cancustomize varmuuskopiointi tai opt out by disablingbackups.
saadaksesi yleiskuvan Androidin varmuuskopiointivaihtoehdoista ja ohjeista siitä, mitkä datayoun pitäisi varmuuskopioida ja palauttaa, katso data backupoverview.
tiedostot, jotka on varmuuskopioitu
oletusarvoisesti Automaattinen varmuuskopiointi sisältää tiedostot useimpiin hakemistoihin, jotka järjestelmä on määrittänyt sovellukseesi:
- jaetut asetustiedostot.
- sovelluksen sisäiseen tallennustilaan tallennetut tiedostot, joihin pääsee
getFilesDir()
taigetDir(String, int)
. - tiedostot hakemistossa, jonka palauttaa
getDatabasePath(String)
, joka sisältää myösSQLiteOpenHelper
Luokka. - tiedostot ulkoisesta tallennustilasta hakemistossa, jonka on palauttanut
getExternalFilesDir(String)
.
Automaattinen varmuuskopiointi sulkee pois getCacheDir()
getCodeCacheDir()
, tai getNoBackupFilesDir()
. Näihin paikkoihin tallennettuja tiedostoja tarvitaan vain väliaikaisesti tai ne on tarkoituksella suljettu varmuuskopiotoimintojen ulkopuolelle.
voit määrittää sovelluksesi sisällyttämään ja sulkemaan pois tiettyjä tiedostoja. Lisätietoja on Include and exclude files-osiossa.
Huomautus: Android ei käsittele komponenttien kokoonpanoa käyttäjätietona. Jos sovelluksesi ottaa käyttöön tai poistaa käytöstä tietyt komponentit sen manifestissa, kun se on käynnissä, älä odota Autobackupin tallentavan ja palauttavan asetuksia. Jos haluat säilyttää asetustilan, tallenna se jaettuihin asetuksiin ja palauta jaetut Asetukset palautettaessa. Jos haluat sovelluksen tallentavan tilansa, säilytä tila jaetuissa asetuksissa ja palauta jaetut Asetukset palautuksessa.
Varmuuskopiointipaikka
varmuuskopiotiedot tallennetaan käyttäjän Google Drive-tilin yksityiskansioon,joka on rajoitettu 25MB: hen sovellusta kohden. Tallennettuja tietoja ei lasketa käyttäjän henkilökohtaiseen Google Drive-kiintiöön. Vain viimeisin varmuuskopio tallennetaan. Kun abackup on tehty, edellinen varmuuskopio (jos sellainen on) poistetaan. Varmuuskopiotiedot eivät voi lukea käyttäjän tai muiden sovellusten laitteen.
käyttäjät voivat nähdä luettelon sovelluksista, jotka on varmuuskopioitu Google DriveAndroid-sovelluksessa. Android-käyttöisellä laitteella käyttäjät löytävät tämän listan Drivappin navigointilaatikosta kohdasta Asetukset > Varmuuskopiointi ja palautus > sovellustiedot.
varmuuskopiot kustakin laitteesta-setup-lifetime tallennetaan erillisiin tietokokonaisuuksiin, kuten seuraavista esimerkeistä käy ilmi:
- Jos käyttäjä omistaa kaksi laitetta, on jokaiselle laitteelle olemassa varmuuskopiotietokanta.
- Jos käyttäjätehdas Nollaa laitteen ja asettaa sen sitten samalle tilille, varmuuskopiointi tallennetaan uuteen tietokokonaisuuteen. Vanhentuneet tietokokonaisuudet poistetaan automaattisesti käyttämättömyyden jälkeen.
Varmuuskopiointiaikataulu
varmuuskopiot tapahtuvat automaattisesti, kun kaikki seuraavat ehdot täyttyvät:
- käyttäjä on ottanut varmuuskopioinnin käyttöön laitteessa. Android 9: ssä tämä asetus on inSettings > System > Backup.
- viimeisestä varmuuskopioinnista on kulunut vähintään 24 tuntia.
- laite on tyhjäkäynnillä.
- laite on kytketty Wi-Fi-verkkoon (jos laitteen käyttäjä ei ole valinnut mobiilidatan varmuuskopiointia).
käytännössä näitä olosuhteita esiintyy suurin piirtein joka yö, mutta laite ei välttämättä koskaan palaa (jos se ei esimerkiksi koskaan yhdisty verkkoon). Säästämiseksi networkbandwidth, lataus tapahtuu vain, jos sovelluksen tiedot ovat muuttuneet.
automaattisen varmuuskopioinnin aikana järjestelmä sammuttaa sovelluksen varmistaakseen, ettei se enää kirjoita tiedostojärjestelmään. Oletuksena, varmuuskopiointijärjestelmä sivuuttaa sovellukset, jotka ovat käynnissä etualalla, koska käyttäjät huomaisivat niiden sovellukset sammutetaan. Voit ohittaa oletuskäyttäytymisen asettamalla backupInForeground
attribuutin true.
testauksen yksinkertaistamiseksi Android sisältää työkaluja, joiden avulla voit käynnistää sovelluksen varmuuskopioinnin manuaalisesti. Lisätietoja, Katso testi varmuuskopiointi ja palautus.
Palauta aikataulu
tiedot palautetaan aina, kun sovellus on asennettu, joko Play-kaupasta, laitteen asennuksen aikana (kun järjestelmä asentaa aiemmin asennetut sovellukset) tai ajettaessa adb install. Palautustoiminto tapahtuu APK: n asennuksen jälkeen, mutta ennen kuin sovellus on käytettävissä käyttäjän käynnistettäväksi.
ensimmäisen ohjatun laiteasennuksen aikana käyttäjälle näytetään lista käytettävissä olevista varmuuskopiotiedoista ja kysytään, mistä tiedoista palauttaa tiedot. Valitusta varmuuskopiotiedokannasta tulee laitteen esi-isien tietokokonaisuus. Laite voi palauttaa joko omista varmuuskopioistaan tai esi-isien aineistosta. Laite priorisoi Oman varmuuskopionsa, jos varmuuskopiot molemmista lähteistä ovat käytettävissä. Jos käyttäjä ei käynyt läpi laitteen asennusvihkoa, laite voi palauttaa vain omista varmuuskopioistaan.
testauksen yksinkertaistamiseksi Android sisältää työkaluja, joiden avulla voit käynnistää sovelluksen palautuksen manuaalisesti. Lisätietoja, Katso testi varmuuskopiointi ja palautus.
ota varmuuskopiointi käyttöön ja poista se käytöstä
sovellukset, jotka kohdistuvat Android 6.0: aan (API-taso 23) tai sitä suurempiin, osallistuvat automaattisesti automaattiseen varmuuskopiointiin. Aseta sovelluksen manifest-tiedostossa Boolen-arvoandroid:allowBackup
ottamaan käyttöön tai poistamaan varmuuskopiointi. Oletusarvo on true
:
<manifest ... > ... <application android:allowBackup="true" ... > ... </application></manifest>
varmuuskopiot voi poistaa käytöstä asettamalla android:allowBackup
false
. You mightwant tehdä tämän, Jos sovellus voi luoda sen tilan kautta muita mekanismin tai jos sovellus käsittelee arkaluonteisia tietoja, että Android ei pitäisi varmuuskopioida.
Include and exclude files
oletusarvoisesti järjestelmä varmuuskopioi lähes kaikki sovelluksen tiedot. Lisätietoja on ohjeaiheessa varmuuskopioidut tiedostot. Tämä osio näyttää, miten määritellä mukautetun XML sääntöjä valvoa, mitä saa varmuuskopioidaan.
- In
AndroidManifest.xml
, lisätäänandroid:fullBackupContent
attribuutti<application>
elementtiin. Tämä attribuutti viittaa XML-tiedostoon, joka sisältää varmuuskopiointisäännöt. Esimerkiksi:<application ... android:fullBackupContent="@xml/my_backup_rules"></application>
- luo XML-tiedosto
my_backup_rules.xml
res/xml/
hakemistoon. Tiedoston sisälle lisätään säännöt, joissa<include>
ja<exclude>
elementit.Seuraava otos varmuuskopioi kaikki jaetut asetukset paitsidevice.xml
<?xml version="1.0" encoding="utf-8"?><full-backup-content> <include domain="sharedpref" path="."/> <exclude domain="sharedpref" path="device.xml"/></full-backup-content>
XML config syntax
The XML syntax for the configuration file is shown below:
<full-backup-content> <include domain= path="string" requireFlags= /> <exclude domain= path="string" /></full-backup-content>
Inside the <full-backup-content>
tag, you can define <include>
and <exclude>
elements:
-
<include>
– Specifies a file or folder to backup. By default, Auto Backup includes almost all app files. Jos määrittelet <include> Elementti, järjestelmä ei enää sisällä oletusarvoisesti yhtään tiedostoa ja varmuuskopioi vain määritellyt tiedostot. Jos haluat sisällyttää useita tiedostoja, käytä useita <include> elementtejä.Huom:
getCacheDir()
getCodeCacheDir()
taigetNoBackupFilesDir()
palauttamat tiedostot jätetään aina pois, vaikka niitä yrittäisi sisällyttää. -
<exclude>
– määrittää tiedoston tai kansion, joka jätetään pois varmuuskopioinnin aikana. Tässä on joitain tiedostoja, jotka tyypillisesti jätetään varmuuskopioinnin ulkopuolelle:- tiedostoja, joilla on laitekohtaiset tunnisteet, joko palvelimen antamia tai laitteella luotuja. Esimerkiksi Google Cloud Messaging (GCM) tarvitsee luoda rekisteröintitunnuksen joka kerta, kun käyttäjä asentaa sovelluksen uuteen laitteeseen. Jos vanha rekisteröintitunniste palautetaan, sovellus saattaa käyttäytyä yllättäen.
- tilitietoja tai muita arkaluonteisia tietoja. Harkitse pyytää käyttäjää todentamaan ensimmäistä kertaa he käynnistävät palautetun sovelluksen sen sijaan, että mahdollistetaan tällaisten tietojen tallentaminen varmuuskopioon.
- sovellusten vianetsintään liittyvät tiedostot.
- suuret tiedostot, jotka aiheuttavat sovelluksen ylittävän 25MB: n varmistuskiintiön.
Huomautus: Jos asetustiedosto määrittää molemmat elementit, niin varmuuskopio sisältää kaiken <include>
elementit miinus <exclude>
elementit. Toisin sanoen <exclude>
menee edelle.
kunkin elementin tulee sisältää seuraavat kaksi ominaisuutta:
-
domain
– määrittää resurssin sijainnin. Tämän ominaisuuden kelvollisia arvoja ovat seuraavat:-
root
– tiedostojärjestelmän kansio, johon kaikki tähän sovellukseen kuuluvat yksityiset tiedostot tallennetaan. -
file
– directories returned bygetFilesDir()
. -
database
– directories returned bygetDatabasePath()
SQLiteOpenHelper
luodut tietokannat tallennetaan tähän. -
sharedpref
– hakemisto, johonSharedPreferences
on tallennettu. -
external
getExternalFilesDir()
-
-
path
: määrittää tiedoston tai kansion, joka sisällytetään varmuuskopioon tai jätetään sen ulkopuolelle. Huomaa, että:- tämä ominaisuus ei tue yleismerkkiä tai regex-syntaksia.
- voit käyttää
.
viitehakemistoon, mutta et voi viitata ylähakemistoon..
turvallisuussyistä. - Jos määrität hakemiston, sääntö pätee kaikkiin hakemiston tiedostoihin ja rekursiivisiin alihakemistoihin.
huomaa: tiedostoja ei voi varmuuskopioida näiden sijaintien ulkopuolelta.
include
elementti voi sisältää myösrequireFlags
attribuutin, jota paketoinnin ehdollisten vaatimusten määrittelyä kuvaava osio käsittelee tarkemmin.
Määrittele varmuuskopiointiin tarvittavat laiteehdot
Jos sovelluksesi tallentaa laitteeseen arkaluonteisia tietoja, voit määrittää ehdot, joiden mukaisesti sovelluksesi tiedot sisältyvät käyttäjän pakettiin. Voit lisätä seuraavat ehdot Android 9: ssä (API level 28) orhigher:
-
clientSideEncryption
: käyttäjän varmuuskopiointi on salattu client-sidesecretillä. Tämä salauksen muoto on käytössä laitteissa, joissa on Android 9 orhigher niin kauan kuin käyttäjä on ottanut varmuuskopioinnin Android 9 orhigher ja on asettanut ascreen lock (PIN,kuvio, tai salasana) laitteelleen. -
deviceToDeviceTransfer
: käyttäjä siirtää varmuuskopionsa toiseen laitteeseen,joka tukee paikallista laitteesta toiseen-tiedonsiirtoa (esimerkiksi Google Pixel).
Jos olet päivittänyt kehityslaitteesi Android 9: ään, sinun täytyy poistaa käytöstä ja ottaa sitten Tietojen varmuuskopiointi uudelleen käyttöön päivityksen jälkeen. Tämä johtuu siitä, että Android salaa varmuuskopiot vain asiakaspuolen salaisuudella sen jälkeen, kun siitä on ilmoitettu käyttäjille asetuksissa tai ohjatussa asennuksessa.
liittymisehtojen ilmoittamiseksi aseta requireFlags
attribuutti <include>
elements within your set of backup rules:
my_backup_rules.xml
<?xml version="1.0" encoding="utf-8"?><full-backup-content> <!-- App data isn't included in user's backup unless client-side encryption is enabled. --> <include domain="file" path="." requireFlags="clientSideEncryption" /><full-backup-content>
Jos sovelluksesi toteuttaa avainarvon backupsystem, tai jos toteutat backupagentin itse,voit soveltaa näitä ehdollisia vaatimuksia myös varmuuskopiologiikkaasi tekemällä bittivertailunBackupDataOutput
object ’sset of transport flags ja your custom backup agent’ sFLAG_CLIENT_SIDE_ENCRYPTION_ENABLED
taiFLAG_DEVICE_TO_DEVICE_TRANSFER
liput.
Seuraava koodinpätkä näyttää esimerkin tämän menetelmän käytöstä:
Kotlin
class MyCustomBackupAgent : BackupAgent() { override fun onBackup(oldState: ParcelFileDescriptor?, data: BackupDataOutput?, newState: ParcelFileDescriptor?) { if (data != null) { if ((data.transportFlags and FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED) != 0) { // Client-side backup encryption is enabled. } if ((data.transportFlags and FLAG_DEVICE_TO_DEVICE_TRANSFER) != 0) { // Local device-to-device transfer is enabled. } } } // Implementation of onRestore() here.}
Java
public class MyCustomBackupAgent extends BackupAgent { @Override public void onBackup(ParcelFileDescriptor oldState, BackupDataOutput data, ParcelFileDescriptor newState) throws IOException { if ((data.getTransportFlags() & FLAG_CLIENT_SIDE_ENCRYPTION_ENABLED) != 0) { // Client-side backup encryption is enabled. } if ((data.getTransportFlags() & FLAG_DEVICE_TO_DEVICE_TRANSFER) != 0) { // Local device-to-device transfer is enabled. } } // Implementation of onRestore() here.}
Implement BackupAgent
sovellukset, jotka toteuttavat automaattisen varmuuskopioinnin ei tarvitse toteuttaaBackupAgent
. Valinnaisesti voi kuitenkin toteuttaa mukautetun BackupAgent
. Tyypillisesti tähän on kaksi syytä:
- haluat saada ilmoituksen varmuuskopiotapahtumista, kuten,
onRestoreFinished()
taionQuotaExceeded(long, long)
. Nämä takaisinsoittotavat suoritetaan, vaikka sovellus ei ole käynnissä. - XML-säännöillä ei voi helposti ilmaista varmuuskopioitavien tiedostojen joukkoa. Näissä harvoissa tapauksissa voit ottaa käyttöön Backupagentin, joka ohittaa
onFullBackup(FullBackupDataOutput)
tallentaaksesi mitä haluat. Jos haluat säilyttää järjestelmän oletustoteutuksen, soita vastaava menetelmä superluokkaansuper.onFullBackup()
.
Jos otat käyttöön Backupagentin, järjestelmä odottaa oletusarvoisesti sovelluksesi suorittavan avaimen / arvon varmuuskopioinnin ja palautuksen. Jos haluat käyttää tiedostopohjaista automaattista varmuuskopiointia, aseta android:fullBackupOnly
attribuutti true
sovelluksesi manifestiin.
automaattisten varmuuskopiointi-ja palautustoimintojen aikana järjestelmä käynnistää sovelluksen rajoitetussa tilassa sekä estää sovellusta pääsemästä tiedostoihin, jotka voivat aiheuttaa ristiriitoja, että antaa sovelluksen suorittaa callback-menetelmiä BackupAgent
. Tässä rajoitetussa tilassa sovelluksen päätoimintaa ei käynnistetä automaattisesti, sen sisällöntuottajia ei alusteta ja perusluokka Application
instantioidaan sovelluksen manifestissa ilmoitetun aliluokan sijaan.
Varoitus: virheiden välttämiseksi varmista, että rajoitetussa tilassa suoritetut sovelluksesi osat (enimmäkseen BackupAgent
) eivät pääse saman sovelluksen sisällöntuottajiin tai yritä asettaa Application
objekti. Jos et voi välttää näitä kuvioita, sitten harkita täytäntöönpanoa avain / arvo varmuuskopiointi tai poistamalla varmuuskopiointi kokonaan.
BackupAgent
on toteutettava abstraktit menetelmät onBackup()
ja onRestore()
, joita käytetään avainarvon varmuuskopiointiin. Mutta jos et halua suorittaa avainarvo varmuuskopiointi, voit vain jättää täytäntöönpanoa näiden menetelmien tyhjä.
lisätietoja, Katso lisäpäivitys.