Android CameraX调用ProcessCameraProvider.getInstance报NoSuchMethodError原因排查
崩溃原因与解决方案
根本原因
该崩溃由CameraX 各组件依赖版本不匹配导致:
报错信息中缺失的getOrCreateInstance方法是特定版本camera-core包才提供的API,你项目中引入的camera-lifecycle组件版本高于camera-core组件版本,高版本的ProcessCameraProvider.getInstance()调用了低版本camera-core中不存在的API,因此抛出NoSuchMethodError异常。
解决步骤
- 统一所有CameraX相关依赖的版本号,禁止跨版本混用。打开Module级别的build.gradle文件,调整依赖配置如下,所有CameraX组件使用同一版本号:
dependencies { // 所有CameraX依赖版本号完全一致 val cameraxVersion = "1.3.0" // 可替换为你需要的稳定/测试版版本号 implementation("androidx.camera:camera-core:$cameraxVersion") implementation("androidx.camera:camera-camera2:$cameraxVersion") implementation("androidx.camera:camera-lifecycle:$cameraxVersion") implementation("androidx.camera:camera-view:$cameraxVersion") }
如果你的项目引入了ML Kit条码扫描等第三方依赖,这些依赖可能自动引入了低版本的CameraX组件,可添加强制版本锁定规则避免版本被覆盖:
// 放在Module级build.gradle的android块外 configurations.all { resolutionStrategy.force "androidx.camera:camera-core:1.3.0" resolutionStrategy.force "androidx.camera:camera-lifecycle:1.3.0" }
- 清除项目缓存后重新编译:点击Android Studio顶部菜单栏
File -> Invalidate Caches...,勾选清除文件系统缓存选项,重启IDE后重新构建项目即可。 - 模拟器运行额外检查:提前给应用授予相机权限,同时确认模拟器相机配置已开启:打开模拟器侧边栏更多选项 -> 设置 -> 高级 -> 相机,选择使用主机相机或者虚拟仿真相机。
内容的提问来源于stack exchange,提问作者Squall Huang
相关产品推荐
相关产品推荐

