Android开发-如何开发一个调试app下db以及sp的框架?

android开发最大的痛点之一

平常我们在开发android应用的时候,经常要调试我们本地的数据库或者是sp数据,对他进行增删改查然后看app是否正常展示等。遇到bug的时候我们通常会 找个root过的手机 进入对应的data/data/packageName/下打命令看数据,或者是在很多地方加入很多日志。其实这种调试方法很是麻烦。我们其实想的是是想和web开发者一样 有一个简单的对数据库操作的ide 给我们使用。

下面就介绍一种简单的思路来完成这个小目标,这样日后无论开发什么app只要接入这个库,即可随时调试我们的本地db或合适sp数据 非常方便。

  • 如何展示我们data/data下面的数据 ?
    其实很简单,我们只需要用web的方式给大家展示即可,用web网页的方式展示我们的数据,然后开发者直接在web网页上操作crud即可。
    这里推荐用nanahttp 这个框架,是一个微型的http server。很适合在手持设备上使用。我们可以用一个service来监听这个httpserver 即可完成上述的功能。就跟我们正常开发前端页面一样,只不过这里我们把html js等文件放到我们assets目录下而已。
例如这里

不要忘记引入nanaohttpd

compile 'org.nanohttpd:nanohttpd:2.2.0'

  • 如何展示出数据库?
    先拿到我们app的数据库路径:
    File root = mContext.getFilesDir().getParentFile(); File dbRoot = new File(root, "/databases"); mDatabaseDir = dbRoot;
    然后看一下这个目录下有几个数据库文件 就知道有几个数据库了

for(String name : mDatabaseDir.list()) { //这里就拿到了所有数据库的名字 传给web展示即可}
拿到名字以后 即可拿到我们的database对象了。
mDatabase = mContext.openOrCreateDatabase(name, 0, null);

拿到database对象以后再做其他的crud操作 无非就是接收一下web传来的参数然后执行sql语句而已。

@Override public Response serve(IHTTPSession session) { String uri = session.getUri(); Response response = getStaticFileResponse("/sqliteonweb", session); if (response != null) { return response; } if (uri.equals("/")) { return getStaticFileResponse("sqliteonweb/index.html"); } // Open database else if (uri.equals("/open")) { return getOpenResponse(session); } else if (uri.equals("/execSQL")) { return getExecSQLResponse(session); } else if (uri.equals("/listDB")) { return getListDBResponse(session); } return getNotFoundResponse(); }

  • sp的部分 就留给大家自己思考了,其实差距不大,主要功夫还是在写前端页面部分
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,421评论 11 349
  • 一. Java基础部分.................................................
    wy_sure阅读 3,882评论 0 11
  • 前中后序的递归实现 前中后序的非递归标准实现 总结 整体的思路是这样的: 指针p指向root,创建栈 当栈不为空或...
    熊白白阅读 412评论 0 0