APP接入开源插件Dokit后崩溃问题解决
2021/5/7 10:30:04
本文主要是介绍APP接入开源插件Dokit后崩溃问题解决,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Dokit简介
- DoraemonKit 能够快速让你的业务测试代码能够在这里统一管理,统一收口;
- DoraemonKit 内置很多常用的工具,避免重复实现,一次接入,你将会拥有强大的工具集合;
- 搭配dokit平台,借助接口Mock、健康体检、文件同步助手让你方便和他人协同,极大的提升研发过程中的效率
- 详细介绍
http://www.dokit.cn/
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, "xxxxxx4a09c833656de5ecxxxxxxxxx"); } }
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的新特性,未添加上述配置的情况下导致应用无法运行
这篇关于APP接入开源插件Dokit后崩溃问题解决的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现