集成OneSignal后Android Studio无法启动iOS模拟器应用但Xcode运行正常
问题原因
错误日志核心提示building for iOS Simulator, but linking in object file built for iOS,本质是两类问题:
- 如果你使用的是M1/M2系列苹果芯片的Mac,旧版本OneSignal iOS SDK的静态框架没有包含iOS模拟器对应的arm64架构切片,模拟器构建时链接失败
- 所有Pods依赖的最低iOS部署目标被设置为8.0,低于当前Xcode支持的最低9.0版本,触发批量警告
Xcode可以正常运行是因为你在Xcode中选择了iOS真机作为运行目标,真机arm64架构是旧版OneSignal SDK原生支持的,因此不会触发链接错误;Android Studio默认调用模拟器构建,触发了兼容问题。
解决方案
方案1:手动配置架构排除与部署版本(适配旧版OneSignal SDK)
- 打开项目
ios目录下的Runner.xcworkspace文件,选中左侧的Runner项目,切换到「Build Settings」选项卡 - 搜索
Excluded Architectures配置,在Debug模式下的「Any iOS Simulator SDK」条目添加值arm64 - 为了避免每次执行
pod install后配置被重置,直接在ios/Podfile文件末尾添加如下配置:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| # 统一将所有Pod的最低部署版本设置为9.0,消除版本警告 config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' # Debug模式下排除模拟器arm64架构,解决OneSignal链接错误 if config.name == 'Debug' config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end end end
- 保存修改后,在项目根目录依次执行以下命令:
cd ios rm -rf Pods Podfile.lock pod install --repo-update
- 回到Android Studio,执行清理后重新运行项目即可。
方案2:升级OneSignal Flutter SDK
如果不需要保留旧版SDK,直接将pubspec.yaml中的OneSignal依赖升级到3.0.0及以上版本,官方已在新版本中使用XCFramework格式适配了M系列芯片的iOS模拟器运行,无需手动修改架构配置。
内容的提问来源于stack exchange,提问作者A_Rush
相关产品推荐
相关产品推荐

