android-debugdata-webtool
android debug database SharedPreference 查看并修改手机数据库和共享参数的工具,优化了 amitshekhar 工程的好多细节功能和代码
支持云端远程控制版本:https://github.com/itgowo/RemoteDataControllerForAndroid
QQ:1264957104
Email:lujianchao@itgowo.com
这个版本不再更新,遗留了一些 bug,请用新版
前辈版本 Github:https://github.com/amitshekhariitbhu/Android-Debug-Database 大家可以去膜拜一下前辈
因为一次使用中发现国外前辈写的服务和接口无法满足我的使用,主要是用的 GET 请求方式,再编码后 url 过于长,超出范围就会数据丢失,所以我改成了 POST 请求的,并且重写了 Server 逻辑,从 Socket 拿到流再解析 http 报文,再到业务处理,同时增加了文件管理功能,相对前辈作品来说这个 bug 少,功能强,有问题欢迎提问,最好放到 issues 里,直接问也会回答但是 issues 也是人气的表现,谢谢各位啦!
懒人模式,1.0.4 版只需要一行代码就可以了,compile 就会自动延时 1.2 秒开启,也保留了旧版手动开启,第二次开启会自动关闭第一次服务;
自动识别开发者使用的三方 Json 库并使用,同时用反射找 Json 工具类,一如既往不引入第三方,不管你用的是 fastjson 还是 Gson,都能自动使用,目前只支持两个最常用的,优先使用 fastjson。
优化与改进
1.增加多线程处理请求
2.手动解析 http 报文数据,增加 HttpRequest 类
3.web 端 get 请求改成 post 请求,满足大数据量需求
4.服务端增加 post 处理能力,支持大数据量传输
5.增加文件管理功能(接口已完成)
6.更改布局和页面逻辑,数据库和共享参数分开,文件管理功能目前简单实现了目录浏览和文件下载功能
7.增加跨域请求 Options 处理,解决跨域问题
8.统一规范:返回值 Response 类,请求 Request 类,接口规范 GET 请求为资源请求,options 请求为跨域说明,POST 请求为数据交互
9.POST 请求统一用 action 表示意向操作
10.本支持库为了尽量少的引用第三方,降低耦合性,由使用者定义 json 工具
Server:android app(纯 java 和 android 原生代码实现 http 报文解析操作等)
web:JQuery、BootStrap 和 DataTables 框架,资源放到 app 内部,无需联网也可访问
使用方法
1:可以将 webToolLibrary.aar 文件放到工程 lib 库里直接依赖,亦可以下载工程单独把 lib 放到项目里( compile project(':webtoollibrary'))
2.依赖
buildscript {
repositories {
jcenter()
*****
}
*****
}
maven 依赖
<dependency>
<groupId>com.itgowo</groupId>
<artifactId>android-WebDebugTool</artifactId>
<version>1.0.10</version>
<type>pom</type>
</dependency>
Gradle 依赖
compile 'com.itgowo:android-WebDebugTool:1.0.10'
debugCompile 'com.itgowo:android-WebDebugTool:1.0.10' //推荐
Android Gradle plugin 3.0 或更高
debugApi 'com.itgowo:android-WebDebugTool:1.0.10' //推荐
api 'com.itgowo:android-WebDebugTool:1.0.10'
3.初始化
可以在 App 启动后任意需要时刻初始化,不手动或手动触发较晚,都会在 2 秒内自动自动初始化,如果开发者自己手动启动且在 application 的 onCreat()中,自动启动将失效。
最简单的是,下面都不配置代码,是会自动启动服务器的。
第一个参数为 context,第二个参数为端口,第三个参数为线程模式(是否是多线程),第四个为服务器状态监听。
public static void initialize(Context context, int mPortNumber, boolean isMultMode, onDebugToolListener mOnDebugToolListener) {
DebugDataTool.initialize(this, 8088, false, new onDebugToolListener() {
@Override
public void onSystemMsg(final String mS) {
//系统信息,主要是一些提示性信息,例如服务器地址
}
@Override
public String onObjectToJson(Object mObject) {
//对象转换为 json 文本,本支持库为了尽量少的因为第三方,降低耦合性,由使用者定义 json 工具,可以用 Gson 或者 fastjson 等,demo 使用的是 fastjson。
return JSON.toJSONString(mObject);
}
@Override
public <T> T onJsonStringToObject(String mJsonString, Class<T> mClass) {
//文本转换为 Json 对象,本支持库为了尽量少的因为第三方,降低耦合性,由使用者定义 json 工具,可以用 Gson 或者 fastjson 等,demo 使用的是 fastjson。
return JSON.parseObject(mJsonString, mClass);
}
@Override
public void onGetRequest(String mRequest, final HttpRequest mHttpRequest) {
//服务器收到请求,文件请求只打印请求 path,数据接口交互 HTTPRequest 包含报文全部信息
}
@Override
public void onResponse(final String mResponse) {
//服务器返回给页面的信息,只有跨域请求 Options 和 POST 数据交互时才会触发,文件下载不触发。
}
@Override
public void onError(final String mTip, final Throwable mThrowable) {
//捕捉到的服务器异常
});
4.说明
app 启动后日志会打印手机网路地址(请在 wifi 下测试,模拟器无效),用浏览器打开对应地址就可以正常使用了,如果偶尔数据请求不到刷新页面即可,可能是某个 js 文件加载失败造成的,demo 的屏幕打印了部分日志,方便测试。