新闻详情

新闻详情

首页 / 资讯中心 / 详情

【错误记录】Flutter 引入友盟 SDK 编译报错 ( ERROR: Missing classes detected while running R8. Please add the mis )

发布时间:2026/9/8 16:55:24来源:尧图网络
【错误记录】Flutter 引入友盟 SDK 编译报错 ( ERROR: Missing classes detected while running R8. Please add the mis )
文章目录前言一、报错信息二、问题分析三、解决方案1、解决方案 一 : 添加混淆规则2、解决方案 二 : 添加 OkHttp 依赖前言Flutter 应用中导入 友盟 SDK ;dependencies:flutter:sdk:flutter # 友盟FlutterSDK:umeng_common_sdk 为公共基础组件(含U-App统计)umeng_apm_sdk 为U-APM性能监控 umeng_common_sdk:^1.3.1umeng_apm_sdk:^2.3.7# 版本冲突说明:umeng_apm_sdk2.x 声明依赖 http^0.13.x,而 package_info_plus10.x 等要求 http^1.x,# 两个大版本区间无交集;参照友盟官方《Flutter接入FAQ》,通过 dependency_overrides 统一 http 版本 # apm 内部仅使用MultipartRequest/MultipartFile,http1.x 完全兼容;dependency_overrides:http:^1.6.0一、报错信息导入 友盟 SDK 后 ,执行flutter build apk --debug命令 , 编译 debug 版本的 apk 安装包 , 编译成功 ;D:\002_Project\001_Flutter\client_terminalflutter build apk--debugFlutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!Running Gradle taskassembleDebug...92.5s √ Built build\app\outputs\flutter-apk\app-debug.apk执行flutter build apk --release命令编译 Android 的 release 版本 apk 安装包 , 报如下错误 :D:\002_Project\001_Flutter\client_terminalflutter build apk--releaseFlutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!Flutter assets will be downloaded from https://storage.flutter-io.cn. Make sure you trust this source!Font assetMaterialIcons-Regular.otfwas tree-shaken, reducing it from1645184to5112bytes(99.7% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app. ERROR: Missing classes detectedwhilerunning R8. Pleaseaddthe missing classes or apply additional keep rules that are generatedinD:\002_Project\001_Flutter\client_terminal\build\app\outputs\mapping\release\missing_rules.txt. ERROR: R8: Missing class okhttp3.Call(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and23other contexts)Missing class okhttp3.Callback(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and3other contexts)Missing class okhttp3.Connection(referenced from: okhttp3.Connection com.efs.sdk.net.OkHttpInterceptor$c.d and3other contexts)Missing class okhttp3.EventListener$Factory(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and5other contexts)Missing class okhttp3.EventListener(referenced from: okhttp3.EventListener com.efs.sdk.net.OkHttpListener$1.create(okhttp3.Call)and21other contexts)Missing class okhttp3.Handshake(referenced from: void com.efs.sdk.net.OkHttpListener.secureConnectEnd(okhttp3.Call, okhttp3.Handshake))Missing class okhttp3.Headers(referenced from: java.lang.String com.efs.sdk.net.OkHttpInterceptor$b.a(int)and5other contexts)Missing class okhttp3.HttpUrl(referenced from: java.lang.String com.efs.sdk.net.OkHttpInterceptor$b.b()and2other contexts)Missing class okhttp3.Interceptor$Chain(referenced from: okhttp3.Response com.efs.sdk.net.NetManager$1.intercept(okhttp3.Interceptor$Chain)and1other context)Missing class okhttp3.Interceptor(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and5other contexts)Missing class okhttp3.MediaType(referenced from: void com.efs.sdk.net.NetManager.post(java.lang.String, java.util.Map, okhttp3.Callback)and4other contexts)Missing class okhttp3.OkHttpClient$Builder(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and3other contexts)Missing class okhttp3.OkHttpClient(referenced from: void com.efs.sdk.net.NetManager.get(java.lang.String, okhttp3.Callback)and3other contexts)Missing class okhttp3.Protocol(referenced from: void com.efs.sdk.net.OkHttpListener.connectEnd(okhttp3.Call, java.net.InetSocketAddress, java.net.Proxy, okhttp3.Protocol)and1other context)Missing class okhttp3.Request$Builder(referenced from: okhttp3.Response com.efs.sdk.net.NetManager$1.intercept(okhttp3.Interceptor$Chain)and4other contexts)Missing class okhttp3.Request(referenced from: okhttp3.Request com.efs.sdk.net.OkHttpInterceptor$b.b and18other contexts)Missing class okhttp3.RequestBody(referenced from: void com.efs.sdk.net.NetManager.post(java.lang.String, java.util.Map, okhttp3.Callback)and4other contexts)Missing class okhttp3.Response$Builder(referenced from: okhttp3.Response com.efs.sdk.net.OkHttpInterceptor.intercept(okhttp3.Interceptor$Chain))Missing class okhttp3.Response(referenced from: okhttp3.Response com.efs.sdk.net.OkHttpInterceptor$c.c and8other contexts)Missing class okhttp3.ResponseBody(referenced from: okhttp3.ResponseBody com.efs.sdk.net.OkHttpInterceptor$a.a and5other contexts)FAILURE: Build failed with an exception. * What went wrong: Execution failedfortask:app:minifyReleaseWithR8.A failure occurredwhileexecuting com.android.build.gradle.internal.tasks.R8Task$R8RunnableCompilation failed to complete * Try:Run with--stacktraceoption to get the stack trace.Run with--infoor--debugoption to getmorelog output.Run with--scanto get full insights.Getmorehelpat https://help.gradle.org. BUILD FAILEDin1m 11s Running Gradle taskassembleRelease...71.5s Gradle task assembleRelease failed withexitcode1二、问题分析这个错误发生在 Android 的 R8 混淆/压缩阶段 ( minifyReleaseWithR8 ) ; R8 在检查代码引用时 , 发现 com.efs.sdk.net 包中的类使用了 okhttp3 的多个类 ( 如 Call、Callback、Request 等 ) , 但项目中没有找到这些 okhttp3 类 , 因此编译失败 ;报错关键信息 :缺失的类 :okhttp3.* ( OkHttp 库 )引用方 :com.efs.sdk.net ( 该包通常属于 友盟 的某个 SDK , 例如 U-APM 或 U-Push )根本原因 :友盟 SDK 依赖了 OkHttp , 但该依赖没有被正确引入到项目中 , 或者在混淆过程中被错误移除 ;对应的报错原因 :未添加 OkHttp 依赖 :友盟 SDK 可能将 OkHttp 声明为 compileOnly 或 provided , 导致编译时不会自动传递依赖 ; 因此 , 你的项目必须手动添加 OkHttp 依赖 ;依赖版本冲突或缺失 :如果项目中同时引入了其他网络库 , 可能发生了依赖冲突 , 导致 OkHttp 被排除或版本不兼容 ;混淆规则不足 :R8 在混淆时会检查所有引用的类 , 如果找不到类就会报错 ; 即使实际运行时不会使用这些类 ( 例如 SDK 内部做了条件判断 ) , 也需要通过混淆规则告诉 R8 忽略缺失的类 ;三、解决方案1、解决方案 一 : 添加混淆规则如果确认 SDK 在运行时不会真正使用这些类 ( 例如 SDK 通过反射调用 , 且仅在特定条件下触发 ) , 可以在 android/app/proguard-rules.pro 中添加以下规则 , 让 R8 忽略缺失的类 :-dontwarn okhttp3.**注意 :此方法只是让编译通过 , 如果运行时真的需要 OkHttp 而没有添加依赖 , 应用可能会崩溃 ; 因此建议优先使用方案一 ;2、解决方案 二 : 添加 OkHttp 依赖添加 OkHttp 依赖 :在 android/app/build.gradle 的 dependencies 块中 , 显式添加 OkHttp :dependencies{// 添加 OkHttp , 版本号请根据项目需要选择 , 建议使用较新稳定版implementationcom.squareup.okhttp3:okhttp:4.12.0// 如果还需要其他 OkHttp 组件 , 如 logging-interceptor , 可一并添加}
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

ThinkPHP6+ElementUI开源商城系统实战指南 2026/9/8 19:04:50

ThinkPHP6+ElementUI开源商城系统实战指南

简介:基于ThinkPHP6与ElementUI打造的开源免费可商用商城系统SparkShop(星火商城),适合需要快速搭建或二次开发电商平台的开发者与企业。系统覆盖小程序、H5、公众号、PC与App多端,内置页面DIY、秒杀、优惠券、积分、分…

阅读更多 →
工业控制MLCC选型实战:从PLC到伺服驱动器的参数与降额指南 2026/9/8 19:04:50

工业控制MLCC选型实战:从PLC到伺服驱动器的参数与降额指南

做工业控制设备这些年,我见过太多因为小电容翻车的案例。PLC的I/O口突然误动作、伺服驱动器母线上电炸机、通信接口丢包,最后排查下来,根因往往不是固件逻辑有问题,也不是MCU选型太弱,而是一颗不起眼的MLCC没选对。MLC…

阅读更多 →
前端转AI实战指南:用Next.js和LangChain.js快速构建AI应用 2026/9/8 19:04:50

前端转AI实战指南:用Next.js和LangChain.js快速构建AI应用

先抛出我的结论:前端转AI,真不用回炉重造学一堆算法和Python后端。你手里的React、TypeScript、对交互和性能的理解,恰恰是这一波AI应用落地最缺的东西。我过去大半年,用Next.js加LangChain.js做了几个AI项目,从内部知…

阅读更多 →
基于CasADi和IPOPT的MATLAB非线性模型预测控制NMPC实现与调参指南 2026/9/8 19:04:49

基于CasADi和IPOPT的MATLAB非线性模型预测控制NMPC实现与调参指南

简介:基于CasADi与IPOPT求解非线性模型预测控制(NMPC)的完整Matlab实现,聚焦车辆/发动机轨迹跟踪与动力学控制场景,适合自动化、计算机、电子信息、数学等专业的学生用于课程设计、期末大作业或毕业设计。代码采用参数…

阅读更多 →
res-downloader 素材下载器:三分钟把视频号、抖音里的资源存进硬盘 2026/9/8 19:04:49

res-downloader 素材下载器:三分钟把视频号、抖音里的资源存进硬盘

res-downloader 素材下载器:三分钟把视频号、抖音里的资源存进硬盘 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

阅读更多 →
Awesome LLM Apps:100+ 可运行 AI 应用模板库深度解析 2026/9/8 19:01:49

Awesome LLM Apps:100+ 可运行 AI 应用模板库深度解析

Awesome LLM Apps:100 可运行 AI 应用模板库深度解析 一、引言 设想这样一个场景:你脑海里冒出一个绝妙的 AI 应用想法——一个能自动把博客文章转成播客的智能体,或者一个能帮你规划旅行的私人助理。你兴致勃勃地打开编辑器,开…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞