簡評:在開發(fā)調(diào)試過程中磨隘,總會免不了需要訪問到應(yīng)用的私有數(shù)據(jù)沸枯,這里就介紹下如何訪問非 root 設(shè)備的應(yīng)用私有數(shù)據(jù)。
Android 官方介紹中有下面這幾種方式來存儲數(shù)據(jù):
- Shared Preferences :鍵值對的方式存儲私有數(shù)據(jù)。
- Internal Storage:存儲在設(shè)備內(nèi)存中(私有數(shù)據(jù))奥此。
- External Storage :存儲在共享的外部存儲中(公共數(shù)據(jù))。
- SQLite Databases :結(jié)構(gòu)化的將數(shù)據(jù)存儲在設(shè)備數(shù)據(jù)庫中雁比。
- Network Connection :使用網(wǎng)絡(luò)服務(wù)器存儲數(shù)據(jù)稚虎。
SharedPreferences 和 SQLite 數(shù)據(jù)庫中的數(shù)據(jù)都是私有的,無法被其他應(yīng)用和用戶訪問到偎捎,除非是模擬器或 root 后的設(shè)備蠢终。下面就介紹下如何在開發(fā)調(diào)試中訪問這些私有數(shù)據(jù)。
訪問私有文件
如果是模擬器或 root 后的設(shè)備茴她,就不需要多說了寻拂。你已經(jīng)有了訪問設(shè)備中私有文件的權(quán)限,可以直接通過 Android Device Monitor 或者命令行來進行訪問丈牢。
對于未 root 的設(shè)備祭钉,則可以使用命令行:
adb shell
run-as <app-package-name>
cd data/data/...
訪問 SQLite 數(shù)據(jù)庫文件
可以使用 SQLite browser 來查看數(shù)據(jù)庫內(nèi)容和執(zhí)行簡單的 SQL 腳本。也可以直接用 sqlite3 命令行工具:
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
擦除應(yīng)用數(shù)據(jù)
當(dāng)我們想擦除應(yīng)用的 SharedPreferences 或 SQLite 數(shù)據(jù)庫數(shù)據(jù)時己沛,通常有兩個方法:
- 卸載慌核、重裝應(yīng)用。
- 到系統(tǒng)設(shè)置中找到你的應(yīng)用程序申尼,然后點擊存儲/清除數(shù)據(jù)垮卓。
但其實有一個 Android Studio 插件 - ADB Idea 能有效簡化這項工作。只需要在 Android Studio / Preferences / Plugins 中搜索 'ADB Idea' 安裝师幕,然后在 Tools / Android / ADB Idea 里面點擊相應(yīng)的選項就可以啦粟按。
另外,也可以使用 Facebook 的 Stetho 來訪問 Android 設(shè)備中的私有文件(無需 root),還能通過 Chrome Developer Tool 來調(diào)試 App钾怔,值得一試碱呼。
原文:Access Private Data on Android
歡迎關(guān)注知乎專欄「極光日報」,每天為 Makers 導(dǎo)讀三篇優(yōu)質(zhì)英文文章宗侦。
擴展閱讀: