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目录下而已。
Android开发-如何开发一个调试app下db以及sp的框架?_第1张图片
例如这里

不要忘记引入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的部分 就留给大家自己思考了,其实差距不大,主要功夫还是在写前端页面部分

你可能感兴趣的:(Android开发-如何开发一个调试app下db以及sp的框架?)