Flutter facebook_app_events Android端Kotlin匿名ID未初始化报错问题
问题原因
这个报错是facebook_app_events 0.13.5版本的原生代码缺陷导致的:插件Android层将anonymousId声明为lateinit延迟初始化变量,但没有在插件挂载阶段完成赋值,调用事件上报或者获取匿名ID的方法时,就会抛出未初始化异常。你升级Kotlin版本、执行flutter clean都无法解决这个原生代码层面的问题。
解决方案
你可以根据自己的需求选择以下任意一种方案:
方案1:回退到无bug的历史版本
直接在pubspec.yaml中将依赖版本固定为0.13.4即可:dependencies: facebook_app_events: 0.13.4修改完成后依次执行
flutter pub get、flutter clean,重新构建项目运行即可。方案2:升级到已修复的更高版本
官方在后续版本已经修复了这个初始化缺陷,你可以直接升级到0.14.0及以上的稳定版本:dependencies: facebook_app_events: ^0.14.0方案3:临时修改0.13.5版本的原生代码
如果你必须使用0.13.5版本,可以手动修改Android层的插件代码:- 找到项目依赖中
FacebookAppEventsPlugin.kt文件,定位到onAttachedToEngine方法 - 在方法内新增一行初始化代码:
anonymousId = AppEventsLogger.getInstance(applicationContext).anonymousId- 重新构建项目即可解决问题。
- 找到项目依赖中
补充注意事项
- 更换依赖版本后必须执行
flutter clean清除旧的构建缓存,再重新打包,避免缓存导致问题复现。 - 如果你主动调用了获取匿名ID的接口,建议将调用逻辑放在插件初始化完成后延迟200~300ms执行,避免原生层还没完成初始化就触发调用。
内容的提问来源于stack exchange,提问作者Erick Garcia
相关产品推荐
相关产品推荐

