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

Flutter能否在Debug模式下禁用断言?iOS端flutter_reactive_ble断言问题求助

问题描述
  • Flutter应用调用原生Swift代码包时仅iOS端出现问题
  • 涉及包:flutter_reactive_ble
  • 触发问题的Swift方法:PluginController.scanForDevices(name:args:completion:)
  • 触发的断言:assert(!central.isScanning)
  • 已知Release模式下断言会被禁用,需求是Debug模式下禁用该断言

Debug模式下禁用Swift断言的解决方法

方法1:全局禁用项目断言

  1. 打开iOS项目的Xcode工程(ios/Runner.xcworkspace)
  2. 选中Runner目标,切换到Build Settings标签页
  3. 搜索ENABLE_NS_ASSERTIONS
  4. 将Debug模式下的该选项设置为NO
    注:此操作会禁用整个项目(包括第三方库)的所有NSAssert和Swift断言

方法2:针对特定断言禁用(精细化处理)

若只想禁用flutter_reactive_ble中的该断言,可修改包源码:

  1. 进入Flutter项目的ios/Pods/flutter_reactive_ble/Classes目录,找到PluginController.swift文件
  2. 定位到包含assert(!central.isScanning)的代码段
  3. 直接注释该行,或用条件编译包裹:
// #if DEBUG
// assert(!central.isScanning)
// #endif

注:Pod更新后修改会被覆盖,建议fork包维护自定义版本,或向官方提交Issue修复重复扫描的逻辑问题

额外建议

断言触发本质是代码存在重复调用扫描的情况,优先排查Flutter代码是否多次调用scanForDevices却未正确停止扫描,从根源解决比禁用断言更稳妥

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 00:25:59