简评:在开发调试过程中,总会免不了需要访问到应用的私有数据,这里就介绍下如何访问非 root 设备的应用私有数据。
Android 官方介绍中有下面这几种方式来存储数据:
- Shared Preferences :键值对的方式存储私有数据。
- Internal Storage:存储在设备内存中(私有数据)。
- External Storage :存储在共享的外部存储中(公共数据)。
- SQLite Databases :结构化的将数据存储在设备数据库中。
- Network Connection :使用网络服务器存储数据。
SharedPreferences 和 SQLite 数据库中的数据都是私有的,无法被其他应用和用户访问到,除非是模拟器或 root 后的设备。下面就介绍下如何在开发调试中访问这些私有数据。
访问私有文件
如果是模拟器或 root 后的设备,就不需要多说了。你已经有了访问设备中私有文件的权限,可以直接通过 Android Device Monitor 或者命令行来进行访问。
对于未 root 的设备,则可以使用命令行:
adb shell
run-as <app-package-name>
cd data/data/...
访问 SQLite 数据库文件
可以使用 SQLite browser 来查看数据库内容和执行简单的 SQL 脚本。也可以直接用 sqlite3 命令行工具:
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
擦除应用数据
当我们想擦除应用的 SharedPreferences 或 SQLite 数据库数据时,通常有两个方法:
- 卸载、重装应用。
- 到系统设置中找到你的应用程序,然后点击存储/清除数据。
但其实有一个 Android Studio 插件 - ADB Idea 能有效简化这项工作。只需要在 Android Studio / Preferences / Plugins 中搜索 'ADB Idea' 安装,然后在 Tools / Android / ADB Idea 里面点击相应的选项就可以啦。
另外,也可以使用 Facebook 的 Stetho 来访问 Android 设备中的私有文件(无需 root),还能通过 Chrome Developer Tool 来调试 App,值得一试。
原文:Access Private Data on Android
欢迎关注知乎专栏「极光日报」,每天为 Makers 导读三篇优质英文文章。
扩展阅读: