Skip to content

l-w-h/DebugTools

Repository files navigation

DebugTools

Android DebugTools 可以保存调试log、可以拦截网络请求、拦截崩溃错误并保存,方便查看

使用方法

1.添加依赖

  • 在项目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"
    

2.添加代码

  • 在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}
                }))
    

3. DebugTools API

  • 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,logE
    tag:tag
    content:内容
    jumpStack:储存打印数据时,获取当前调用任务堆栈信息,需要跳过的堆栈数
    将调试log保存到log列表