Android DebugTools 可以保存调试log、可以拦截网络请求、拦截崩溃错误并保存,方便查看
- 在项目build.gradle中添加
allprojects { repositories { maven{ url 'https://dl.bintray.com/liwh/PublicMaven'} } }
- 在Module build.gradle中添加
debugImplementation "com.lwh.debug:DebugTools:DebugTools:2.3.1@aar" releaseImplementation "com.lwh.debug:DebugTools:DebugToolsNoOp:2.3.1@aar"
-
在Application中的onCreate方法中添加如下代码
DebugTools.getInstance(this).init(true).initCrash( MainActivity::class.java ).startWhitecrashIntercept(onCrashListener = object :OnCrashListener{ override fun onCrash(throwable: Throwable) { Toast.makeText(this@App,""" |捕获到崩溃信息: |${throwable.javaClass.simpleName} |${throwable.message}""".trimMargin(),Toast.LENGTH_SHORT).show() } })
-
在初始化网络请求时添加如下代码
val httpClientBuilder: OkHttpClient.Builder = OkHttpClient.Builder() httpClientBuilder.addNetworkInterceptor(DebugTools.getInstance().getRecordInterceptor(object :RecordInterceptor.OnInterceptorCallbackImpl(){ /** * 是否解析请求body */ fun isAnalyzeRequestBody(url: String):Boolean{return true} /** * 是否解析返回body */ fun isAnalyzeResponseBody(url: String):Boolean{return true} /** * 是否加密请求body */ fun isEncryptRequestBody(url: String):Boolean{return false} /** * 是否解密返回body */ fun isDecryptResponseBody(url: String):Boolean{return false} /** * 请求body加密 */ fun onRequestBodyEncrypt(url:String,body:String?):String?{return body} /** * 返回body解密 */ fun onResponseBodyDecrypt(url:String,body:String?):String?{return ""} /** * 忽略url */ fun isIgnoreUrl(url:String):Boolean{return false} }))
-
API使用说明
方法 参数 说明 getInstance 无 获取DebugTools实例 init autoAdd:自动添加DebugView,默认自动添加
magnetViewListener:DebugView点击移除监听,默认实现初始化 initCrash enabled:是否启动全局异常捕获,默认启动
showErrorDetails:是否显示错误详细信息,默认显示
showRestartButton:是否显示重启按钮,默认显示
trackActivities:是否跟踪Activity,默认跟踪
minTimeBetweenCrashesMs:崩溃的间隔时间(毫秒),默认2000ms
errorDrawable:崩溃后默认图标
restartActivityClass:重新启动后的activity
errorActivityClass:崩溃后的错误activity
eventListener:崩溃后的错误监听初始化异常捕获 startWhitecrashIntercept interceptAll:拦截所有
onCrashListener:白名单崩溃通知开启白名单拦截 stopWhitecrashIntercept 无 关闭白名单崩溃拦截 attachDebugView activity:当前显示页面 手动添加DebugView detachDebugView activity:当前显示页面 手动移除DebugView setDebugViewListener magnetViewListener:DebugView点击移除监听,默认实现 设置DebugView点击移除监听 getRecordInterceptor callback:提供解密body方法,默认无 获取网络拦截器 logV,logD,logI
logW,logEtag:tag
content:内容
jumpStack:储存打印数据时,获取当前调用任务堆栈信息,需要跳过的堆栈数将调试log保存到log列表