Android接入开源插件Dokit后崩溃问题解决

Dokit简介

  1. DoraemonKit 能够快速让你的业务测试代码能够在这里统一管理,统一收口;
  2. DoraemonKit 内置很多常用的工具,避免重复实现,一次接入,你将会拥有强大的工具集合;
  3. 搭配dokit平台,借助接口Mock、健康体检、文件同步助手让你方便和他人协同,极大的提升研发过程中的效率

Android应用接入

1.Gradle 依赖
dependencies {
…
debugImplementation 'com.didichuxing.doraemonkit:dokitx:3.3.5'
releaseImplementation 'com.didichuxing.doraemonkit:dokitx-no-op:3.3.5'
…
}
2.初始化
  • 在 App 启动的时候进行初始化。
import android.app.Application;

import com.didichuxing.doraemonkit.DoraemonKit;

public class AndroidApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //pId可在https://www.dokit.cn/登录后控制台添加应用后获取
        DoraemonKit.install(this, "5bb7f0d4a09c833656de5ec0708c68a0");
    }
}
3.流量监控以及其他AOP功能(可选)
  • AOP包括以下几个功能: 1)百度、腾讯、高德地图的经纬度模拟 2)UrlConnection、Okhttp 抓包以及后续的接口hook功能 3)App 启动耗时统计 4)慢函数 5)大图
  • 在项目的 build.gradle 中添加 classpath。
buildscript {
    dependencies {
        …
        classpath 'com.didichuxing.doraemonkit:dokitx-plugin:3.3.5'
        …
    }
}
  • 在 app 的 build.gradle 中添加 plugin。
apply plugin: 'com.didi.dokit'
  • 插件配置选项: 添加到app module 的build.gradle文件下 与android {}处于同一级
    dokitExt {
      //通用设置
      comm {
          //地图经纬度开关
          gpsSwitch true
          //网络开关
          networkSwitch true
          //大图开关
          bigImgSwitch true
          //webView js 抓包
          webViewSwitch true
      }
    
      slowMethod {
          //调用栈模式配置
          stackMethod {
              //默认值为 5ms 小于该值的函数在调用栈中不显示
              thresholdTime 10
              //调用栈函数入口
              enterMethods = ["com.didichuxing.doraemondemo.MainDebugActivity.test1"]
              //黑名单 粒度最小到类 暂不支持到方法
              methodBlacklist = ["com.facebook.drawee.backends.pipeline.Fresco"]
          }
          //普通模式配置
          normalMethod {
              //默认值为 500ms 小于该值的函数在运行时不会在控制台中被打印
              thresholdTime 500
              //需要针对函数插装的包名
              packageNames = ["com.wch.dokit"]
              //不需要针对函数插装的包名&类名
              methodBlacklist = ["com.didichuxing.doraemondemo.dokit"]
          }
      }
    }
    
  • 其中strategy和methodSwitch配置项已经弃用,新的配置开关位于项目根目录下的gradle.properties中,具体的配置如下所示:
    // dokit全局配置
    // 插件开关
    DOKIT_PLUGIN_SWITCH=true
    // DOKIT读取三方库会和booster冲突 如果你的项目中也集成了booster 建议将开关改成false
    DOKIT_THIRD_LIB_SWITCH=true
    // 插件日志
    DOKIT_LOG_SWITCH=true
    // 自定义Webview的全限定名 主要是作用于h5 js抓包和数据mock
    DOKIT_WEBVIEW_CLASS_NAME=com/didichuxing/doraemonkit/widget/webview/MyWebView
    // dokit 慢函数开关
    DOKIT_METHOD_SWITCH=true
    // dokit 函数调用栈层级
    DOKIT_METHOD_STACK_LEVEL=4
    // 0:默认模式 打印函数调用栈 需添加指定入口  默认为application onCreate 和attachBaseContext
    // 1:普通模式 运行时打印某个函数的耗时 全局业务代码函数插入
    DOKIT_METHOD_STRATEGY=0
    
4.编译通过后安装
  • 华为畅享8设备(安卓8),安卓应用引入dokit插件编译通过打开后崩溃并报如下错误
2021-01-08 11:21:48.002 13696-13696/test.xdja.com.testdemov3 E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.xdja.com.testdemov3, PID: 13696
java.lang.RuntimeException: Unable to instantiate application test.xdja.com.testdemov3.AndroidApplication: 
java.lang.ClassNotFoundException: Didn't find class "test.xdja.com.testdemov3.AndroidApplication" 
on path: DexPathList[[zip file "/data/app/test.xdja.com.testdemov3-EtvgXQ5acPFVjPhPky2zyQ==/base.apk"],
nativeLibraryDirectories=[/data/app/test.xdja.com.testdemov3-EtvgXQ5acPFVjPhPky2zyQ==/lib/arm64, 
/data/app/test.xdja.com.testdemov3-EtvgXQ5acPFVjPhPky2zyQ==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64, /product/lib64]]
  • 华为MatePad设备(安卓10),安卓应用引入dokit插件编译通过打开后崩溃并报如下错误
2021-01-08 11:33:29.643 19241-19241/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.xdja.com.testdemov3, PID: 19241
java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
 at okhttp3.internal.Util.<clinit>(Util.java:87)
 at okhttp3.internal.Util.immutableList(Util.java:234)
 at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
 at com.didichuxing.doraemonkit.util.DoraemonStatisticsUtil.uploadUserInfo(DoraemonStatisticsUtil.java:54)
 at com.didichuxing.doraemonkit.DoraemonKitReal.install(DoraemonKitReal.kt:174)
 at com.didichuxing.doraemonkit.DoraemonKit.install(DoraemonKit.kt:58)
 at com.didichuxing.doraemonkit.DoraemonKit.install(DoraemonKit.kt:24)
 at test.xdja.com.testdemov3.AndroidApplication.onCreate(AndroidApplication.java:13)
 at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1202)
 at android.app.ActivityThread.handleBindApplication(ActivityThread.java:7351)
 at android.app.ActivityThread.access$2400(ActivityThread.java:308)
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2295)
5.上述问题解决
  • 根据华为畅享8设备相关错误信息,尝试了如调整dokit版本、新增引入okhttp3、调整DoraemonKit.install引入方式、新增multiDexEnabled true、调整Application位置等,均未解决打开应用直接崩溃问题
  • 根据华为MatePad设备错误信息,尝试新增以下配置后正常,且在华为畅享8设备也正常
    compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    
  • 原因分析:dokit插件使用了使用了Java8的新特性,未添加上述配置的情况下导致应用无法运行
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容