You need to enable JavaScript to run this app. Android Kotlin+Firebase集成ML Kit人脸检测类缺失错误求助
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin+Firebase集成ML Kit人脸检测类缺失错误求助

问题本质

报错里提示缺失的TelemetryLoggingOptions类,是Google Play服务基础组件play-services-basement的内置类,出现这类报错的核心原因都是依赖版本不匹配、类路径隔离导致的解析失败:

  • 不管选离线SDK还是Play渠道分发的ML Kit人脸检测方案,两类组件都依赖同版本的Play基础服务类,所以会触发完全相同的报错
  • 当前动态特性模块的compileSdkVersion、targetSdkVersion为29,而你引入的play-services-mlkit-face-detection:16.1.5版本,最低要求compileSdk达到30以上,SDK版本适配断层直接引发类解析失败
  • 动态特性模块的依赖传递规则下,ML Kit要求的高版本基础组件不会被自动打包进主APK的共享类路径,运行时加载环节找不到对应类
  • 项目现有引入的play-services-auth:19.0.0传递依赖的basement组件版本过低,和ML Kit要求的版本存在冲突,拉取依赖时被低版本组件覆盖
可直接落地的修复步骤
  • 首先调整动态特性模块的SDK配置:将compileSdkVersion、targetSdkVersion升级到30及以上,同步把buildToolsVersion升级到30.0.0及以上,解除旧SDK版本的适配限制
  • 在项目根模块的build.gradle中添加全局依赖版本强制规则,统一拉取兼容版本的Play基础组件,彻底解决版本冲突:
    configurations.all {
        resolutionStrategy.force 'com.google.android.gms:play-services-basement:18.0.0'
        resolutionStrategy.force 'com.google.android.gms:play-services-tasks:18.0.1'
    }
    
  • 替换原有不兼容的ML Kit人脸检测依赖,选用和当前SDK版本适配的稳定版本:
    • 选择Play渠道分发方案时,替换原依赖为:implementation 'com.google.android.gms:play-services-mlkit-face-detection:17.0.0'
    • 选择离线SDK集成方案时,替换原依赖为:implementation 'com.google.mlkit:face-detection:16.1.5'
  • 移动之前添加的ML Kit Manifest元数据:把包含android:name="com.google.mlkit.vision.DEPENDENCIES"的<meta-data>节点,从动态特性模块的Manifest文件移动到主应用模块的AndroidManifest.xml中——动态特性模块的Manifest元数据在分包打包阶段不会被系统正确读取,ML Kit的Play渠道依赖拉取逻辑无法识别动态模块内的声明
  • 检查项目的R8/混淆压缩规则,确保没有裁剪Google服务的内部类:
    -keep class com.google.android.gms.** { *; }
    -keep class com.google.mlkit.** { *; }
    
  • 核对动态特性模块和主应用模块的依赖传递规则,确保com.google.mlkit:common组件在主模块的类路径中可见,不会因为动态模块的依赖隔离,导致运行时加载不到公共类

内容的提问来源于stack exchange,提问作者user14544642

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 09:45:04