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

添加ObjectBox依赖后Codemagic iOS构建生成Sourcery.app而非Runner.app的问题

问题:ObjectBox依赖导致Codemagic iOS构建产出Sourcery.app而非Runner.app

在Flutter/Dart项目中使用ObjectBox时,按照文档要求引入objectbox_flutter_libs(或objectbox_sync_flutter_libs)依赖后,Codemagic的iOS构建产物变成了Sourcery.app,而非预期的Runner.app,导致无法调试安装。构建过程中会安装ObjectBox 1.9.0并创建sourcery.app目录,但日志中Runner.app的配置未变更,重命名或替换文件内容也无法解决安装问题。

基本信息

  • ObjectBox版本:^2.3.1
  • Flutter/Dart SDK:Flutter 3.13.7 • Dart 3.1.3
  • 可复现性:添加objectbox_flutter_libs或objectbox_sync_flutter_libs依赖必现
  • 构建系统:macOS M1标准虚拟机

复现步骤

  • 在pubspec.yaml中添加objectbox依赖
  • 添加objectbox_flutter_libs/objectbox_sync_flutter_libs依赖
  • 运行ObjectBox生成器,执行flutter pub get
  • 启动Codemagic iOS构建

Codemagic工作流配置

  • 默认工作流,构建目标:iOS
  • 机器:Mac mini M1
  • Flutter通道:stable,构建模式:profile(无风味)
  • Xcode版本:15(最新),CocoaPods版本:默认
  • 无自定义脚本、环境变量,依赖缓存已禁用,分发全部禁用

问题原因分析

  • objectbox_flutter_libs依赖内部集成了Sourcery代码生成工具,在Xcode 15的构建环境中,构建系统误将Sourcery的目标识别为主产物,覆盖了Flutter默认的Runner目标优先级。
  • ObjectBox 1.9.0的依赖引入了额外的Xcode目标配置,与Flutter项目的Runner.target产生冲突,导致Codemagic的自动构建流程选择了错误的打包目标。

解决方法

1. 强制指定Xcode构建目标(构建前脚本)

在Codemagic的构建前脚本中添加以下命令,直接指定构建Runner目标:

cd ios
xcodebuild -workspace Runner.xcworkspace -scheme Runner -configuration Profile build

2. 调整ObjectBox依赖版本

尝试降级或升级ObjectBox到兼容性更好的版本,比如:

dependencies:
  objectbox: ^2.2.0
  objectbox_flutter_libs: ^2.2.0

执行flutter pub get后重新触发构建。

3. 修改iOS项目Xcode配置

打开iOS目录下的Runner.xcworkspace,手动调整Xcode配置:

  • 选中项目文件,进入Build Settings,确保Product Name设置为Runner
  • 在Targets列表中移除Sourcery相关的目标(若存在)
  • 将Runner设置为默认的构建目标

4. 直接调用Flutter构建命令

在Codemagic的构建前脚本中,用Flutter命令替代自动Xcode构建:

flutter build ios --profile --no-codesign

强制通过Flutter构建流程生成Runner.app,避免Xcode自动选择错误目标。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:12:50