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

iOS 12设备Flutter混合应用MLKITx相关崩溃问题求助

iOS 12设备上Flutter/原生混合应用启动50秒后MLKITx模块崩溃问题解决方案

问题背景

运营的Flutter/原生iOS混合应用自十月初发版后,iOS 12设备出现大量启动后约50秒的崩溃,调用栈指向未主动集成的MLKITx模块,升级Flutter版本(3.10.0→3.13.9)后问题依旧,应用依赖Firebase。

崩溃调用栈:

Crashed: PHTFlatFilePhenotype
0  <App name>                 0x104d6ac MLKITx_BuildData::BaselineChangelistAsInt() + 71964
1  <App name>                 0x1012078 __82-[MLKITx_PHTFlatFilePhenotype registerPackage:version:logSources:params:callback:]_block_invoke.192 + 4329873528
2  libdispatch.dylib              0x5fa38 _dispatch_call_block_and_release + 24
3  libdispatch.dylib              0x607d4 _dispatch_client_callout + 16
4  libdispatch.dylib              0x9324 _dispatch_lane_serial_drain$VARIANT$mp + 592
5  libdispatch.dylib              0x9e40 _dispatch_lane_invoke$VARIANT$mp + 428
6  libdispatch.dylib              0x124ac _dispatch_workloop_worker_thread + 596
7  libsystem_pthread.dylib        0xc114 _pthread_wqthread + 304
8  libsystem_pthread.dylib        0xecd4 start_wqthread + 4

已确认的问题根源

不少开发者遇到过相同问题,核心原因是Firebase间接引入的MLKit组件与iOS 12系统不兼容:

  • Firebase核心组件(如Analytics、Remote Config)会自动依赖MLKit的PHTFlatFilePhenotype模块,即使未主动集成MLKit SDK;
  • MLKit新版本中MLKITx_BuildData::BaselineChangelistAsInt()方法在iOS 12上存在内存访问或类型转换错误,启动后50秒左右的后台dispatch线程执行该逻辑时触发崩溃。

可行的解决方案

1. 锁定Firebase依赖版本

将Firebase相关组件锁定到兼容iOS 12的版本,例如:

  • 在Podfile中指定Firebase/Core版本为10.17.0及以下:
    pod 'Firebase/Core', '~> 10.17.0'
    
  • 执行pod update Firebase/Core后,检查Podfile.lock确认MLKit相关子库版本低于6.0.0(MLKit 6.0+放弃了iOS 12支持)。

2. 禁用MLKit后台统计逻辑

通过配置关闭不必要的后台数据收集:

  • 在Info.plist中添加FirebaseAppDelegateProxyEnabled并设置为NO,减少Firebase自动初始化的后台模块;
  • 针对iOS 12设备调整Firebase Analytics收集策略:
    if (@available(iOS 13.0, *)) {
        // 正常配置Analytics
    } else {
        [FIRAnalytics setAnalyticsCollectionEnabled:NO];
    }
    

3. 排除MLKit冗余依赖

如果不需要MLKit相关功能,可在Podfile中强制排除MLKit组件:

pod 'Firebase/Core', :exclude => ['MLKitCommon']

注意:此操作需测试确认不影响Firebase核心功能正常使用。

验证步骤

  1. 查看Podfile.lock中的MLKitCommon、MLKitCore等依赖版本,确认是否为不兼容iOS 12的高版本;
  2. 在iOS 12测试设备上安装修改后的包,观察启动后50秒是否仍出现崩溃;
  3. 检查崩溃日志,确认调用栈中是否已无MLKITx相关条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:01:12