引入
数据的持久化存储是在APP开发中不可或缺的手段,APP的一些配置信息以及另外的一些稍大规模的数据存储可能需要使用到SharedPreferences
和database
;这两种方式产生的数据正常都是存在在Android的Internal Storage中的(/data/data/<package name>/ )。
数据存储在这个区域中,与存放在External Storage相比,有一些麻烦;如果手机没有root权限的话,是无法使用文件浏览工具(ES文件浏览器,adb下cd到对应目录)来直观的进行文件浏览的。
为了验证存储数据的正确性,一般有两种方法:
- 在APP中用配套的read方法把数据读取出来进行验证;如果出现错误,比较麻烦的是刚开始不容易定位到是save出错,还是load出错;
- 在APP中,用API把此文件copy到External Storage进行debug;这种方式debug的时候需要频繁copy文件,且稍显繁琐。
Debug Database的工具
除了上述比较原始的方法外,借助第三方工具,有更好的对database
和SharedPreferences
进行debug的手段:
-
这是Android Studio的一个插件,安装方式:
Setting -> Plugins -> Browse Repositories
搜索SQLScout即可安装
只是这是一个收费插件。。。
-
这个是一个open source的debug
database
和SharedPreferences
的工具,原理是通过在手机端建立一个server,在浏览器中对server的数据发起访问请求,从而规避了root权限的问题。限制: 由于是采用BS的结构,手机端是建立服务器,PC端浏览器访问,需要手机和PC在同一局域网中。
Android-Debug-Database
使用
环境准备 - 工程中添加依赖
在app的build.gradle
中添加依赖
debugCompile 'com.amitshekhar.android:debug-db:1.0.3'
- debugCompile的作用是只在你debug编译时起作用,不影响release
- 如果是在Android 3.0及以上的版本(gradle wrapper 3.+, gradle 4.+), 应该使用
debugImplementation
(官方推荐),如果是Android Studio 2.x的版本,不认识这个关键字,改用debuCompile
;
只用添加上面一行就行了,稍后就是等APP在你的手机运行起来后,在PC的浏览器中中用logcat中看到的server address进行访问就好了
浏览器访问
当APP运行起来后,在logcat中搜索如下一行:
D/DebugDB: Open http://xxx.xx.xx.xx:8080
把此服务器地址copy到浏览器中进行访问,就可以看到如下的UI了;如下是我在APP中新建了一个BookStore.db
的数据库,在此数据库中有book
和category
两张表,下图展示的是book
这张表中的数据。
[图片上传失败...(image-2f6e0e-1521192578494)]
上述数据库是使用LitePal
创建出来的,这是一个比Android自带SQLite好用太多的开源Android数据库框架,采用了对象关系映射
,稍后再来整理LitePal的用法。