Kehittäjien virallisen dokumentaation mukaan Androidissa on seuraavat tietojen tallennusvaihtoehdot:
- Jaetut asetukset – Tallenna yksityiset primitiiviset tiedot avain-arvopareina.
- Sisäinen tallennus – Tallenna yksityiset tiedot laitteen muistiin.
- Ulkoinen tallennus – Tallenna julkiset tiedot jaettuun ulkoiseen tallennusmuistiin.
- SQLite-tietokannat – Tallenna strukturoidut tiedot yksityiseen tietokantaan.
- Verkkoyhteys – Tallenna tiedot verkkoon omalla verkkopalvelimella.
Verkkoyhteys-vaihtoehdon lisäksi kaikki muut vaihtoehdot ovat tietojen pysyvää tallentamista laitteeseen. Sekä SharedPreferences että SQlite-tietokannat ovat laitteeseen tallennettuja yksityisiä tietoja. Nämä tiedostot eivät ole muiden sovellusten tai käyttäjien käytettävissä, ellet käytä emulaattoria tai rootattua laitetta. Seuraavassa on muutamia tapoja, joilla pääsen käsiksi näihin yksityisiin tietoihin ja tarkastelen niitä virheenkorjausta varten kehityksen aikana.
Emulaattorilla tai rootatulla laitteella
Jos käytät emulaattoria tai rootattua laitetta. Sinulla pitäisi olla pääsy laitteen yksityiseen tallennustilaan. Voit käyttää tiedostoja Android Studion graafisesta käyttöliittymästä tai komentorivin kautta:
- graafinen käyttöliittymä – Käynnistä Android Studiossa Android Device Monitor valikosta: Työkalut/Android/Android Device Monitor. Siirry File Explorer -välilehdelle ja sitten data/data/<sovelluspakettisi nimi>/. Etsi etsimäsi tiedosto, ja voit työntää ja vetää tiedoston sieltä.
- Komentorivi – voit myös työntää tiedoston laitteeseen tai vetää tiedoston laitteesta adb:n kautta:
adb pull remote-dir local-dir <-- Copy from device to local machine
adb push local-dir remote-dir <-- Copy from local machine to device
Ei juurruttamattomalla laitteella
Jos et käytä emulaattoria tai juurrullista laitetta. Komentoriviltä:
adb shell
run-as <app-package-name>F
cd data/data/...
Nyt voit käyttää laitteen sisäisen tallennustilan tiedostoja. Voit poistua komentotulkista kirjoittamalla exit.
exit <-- exit out of adb shell
Sqlite-tietokantatiedosto
Kun pääset käsiksi SQLite-tietokantatiedostoon emulaattorilla, rootatulla laitteella tai adb shell / run as -ohjelman kautta, on olemassa muutamia vaihtoehtoja, joilla voit tarkastaa skeeman ja SQLite-tietokantasi laitteessa.
Tarkista SQLite db GUI-työkalun kautta
Nosta tiedosto ensin laitteesta ja käytä sitten GUI-ohjelmistoa skeeman ja sisällön tarkasteluun. Käytän SQLite-selainta, jonka avulla voit tarkastella tietokannan skeemaa, taulukon sisältöä sekä suorittaa joitakin yksinkertaisia SQL-skriptejä.
Tarkista SQLite db sqlite3-komentorivityökalun avulla
Minulle helpompi vaihtoehto on käyttää sqlite3-komentorivityökalua tietokannan tarkastamiseen adb-selaimesta –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Vaihtoehtoisesti voit käyttää sqlite3:a paikallisesti komentorivin sijaan komentorivin sisällä, sen jälkeen kun olet vetänyt tietokantatiedoston laitteelta:
adb pull <db-name>
sqlite3 <db-name>
Sovelluksen tietojen pyyhkiminen pois
Työskennellessäsi SharedPreferences- tai SQLite-db:n kanssa Androidissa sinun on usein pyyhittävä tiedot pois ja aloitettava alusta. Tässä on siis muutama vaihtoehto:
- Poista sovellus ja asenna se uudelleen
- Mene laitteen Asetukset/Sovellukset/Etsi sovelluksesi ja napsauta sitä/Tallennus/Tyhjennä tiedot
On olemassa paljon helpompi tapa avustaa kehitystyötäsi ja debuggausprosessia: Asenna Android Studion lisäosa nimeltä ADB Idea. Voit asentaa laajennuksen menemällä Android Studio/Preferences/Plugins, klikkaamalla Browse repositories ja etsimällä ”ADB Idea”. Asenna ja käynnistä Android Studio uudelleen, niin näet laajennusvaihtoehdon näkyvän kohdassa Tools/Android/ADB Idea. Kokeile sitä. Minusta tämä lisäosa on erittäin hyödyllinen, kun minun täytyy pyyhkiä sovelluksen tiedot.
Käytä kirjastoa
On muitakin vaihtoehtoja päästä käsiksi Android-laitteiden yksityisiin tiedostoihin ja tutkia niitä käyttämällä kirjastoa.
Yksi vaihtoehdoista on käyttää kirjastoa nimeltä Android Debug Database, ja voit lukea yksityiskohdat kirjoittajan blogikirjoituksesta tästä.