You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成ArCore插件编译报错:Activity?与Activity类型不匹配

解决ArCore Flutter插件编译错误的方案

一、修改插件源码修复类型不匹配问题

报错核心是ArcoreFlutterPlugin.kt第32行的空安全类型不兼容——代码期望非空的Activity,但传入的是可空的Activity?。按以下步骤修改:

  1. 找到本地插件缓存路径:C:\Flutter\flutter_windows_3.3.1-stable\flutter.pub-cache\hosted\pub.dartlang.org\arcore_flutter_plugin-0.0.11\android\src\main\kotlin\com\difrancescogianmarco\arcore_flutter_plugin\ArcoreFlutterPlugin.kt
  2. 定位到报错行,将可空的activity转为非空实例:
    • 如果原代码是直接传入activity,改成用!!强制非空(仅确认activity不会为空时用):
      // 示例:原代码 ArCoreView(activity, ...)
      val arCoreView = ArCoreView(activity!!, registrar.messenger(), this)
      
    • 更安全的写法是用空判断:
      activity?.let { nonNullActivity ->
          val arCoreView = ArCoreView(nonNullActivity, registrar.messenger(), this)
          // 后续初始化逻辑
      }
      
  3. 同步调整ArCoreView.kt的适配逻辑:如果ArCoreView的构造函数要求非空Activity,确保调用时传入的是经过空校验的实例,而不是只修改onActivityCreated的参数声明。

二、更换兼容的插件版本

arcore_flutter_plugin:0.0.11版本较老,和Flutter 3.3.1的Kotlin空安全规则不兼容,推荐尝试:

  • 升级到0.0.14版本:在项目pubspec.yaml中修改依赖为arcore_flutter_plugin: ^0.0.14,执行flutter pub get后重新编译
  • 若官方版本仍有问题,可寻找社区维护的分支版本(优先选择最近有提交记录的fork)

三、替代方案

  1. 改用官方维护的AR插件:直接使用Google官方推出的Flutter ARCore插件,兼容性和稳定性更有保障
  2. 对齐Kotlin版本:在项目android/build.gradle中确保Kotlin版本与Flutter 3.3.1兼容,推荐设置为1.6.21:
    buildscript {
        ext.kotlin_version = '1.6.21'
        // 其他配置项
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:25:26