返回

Flutter 集成 MetaMask 和 OpenStreetMap 插件时 Pod 配置错误的解决指南

IOS

Flutter 集成 MetaMask 和 OpenStreetMap 插件的 Pod 故障排除

问题

当使用 Flutter 为 iOS 配置应用时,如果你集成了 MetaMask iOS SDK 和 Flutter OpenStreetMap 插件,你可能会在执行 pod install 时遇到以下错误:

[!] Can't merge user_target_xcconfig for pod targets: ["OSMFlutterFramework", "metamask-ios-sdk"]. Singular build setting EXCLUDED_ARCHS[sdk=iphonesimulator*] has different values.

解决方案

为了解决此问题,你需要修改你的 Podfile 以明确指定这两个目标的 EXCLUDED_ARCHS 构建设置。以下步骤将指导你完成此过程:

  1. 打开你的 Podfile
  2. target 'Runner' 块中,添加以下代码:
  if ['OSMFlutterFramework', 'metamask-ios-sdk'].include? target.name
    config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'i386 arm64'
  end
  1. 保存你的 Podfile 并再次运行 pod install

解释

上面添加的代码将检查目标的名称,如果它是 OSMFlutterFrameworkmetamask-ios-sdk,它将设置 EXCLUDED_ARCHSi386 arm64。这将显式指定这些目标不应在模拟器架构上构建。

注意

对于不同的版本或特定的配置,你可能需要调整 EXCLUDED_ARCHS 的值。请参阅 Apple 开发者文档以获取更多信息。

其他建议

  • 确保 metamask-ios-sdkflutter_osm_plugin 的版本兼容。
  • 尝试使用 Flutter 稳定或 beta 渠道,以确保使用的是最新版本的 Flutter。
  • 如果问题仍然存在,请尝试清除 DerivedData 文件夹并重新构建项目。

总结

通过修改 Podfile 并明确指定 OSMFlutterFrameworkmetamask-ios-sdk 目标的 EXCLUDED_ARCHS 构建设置,你可以解决 "Can't merge user_target_xcconfig for pod targets" 错误,并成功集成这两个包。

常见问题解答

问:为什么需要明确指定 EXCLUDED_ARCHS?

答:它可以防止在模拟器架构上构建这些目标,这是导致错误的原因。

问:我应该将 EXCLUDED_ARCHS 设置为哪些值?

答:通常情况下,你可以将其设置为 i386 arm64。但是,对于不同的版本或配置,你可能需要调整它。

问:如何清除 DerivedData 文件夹?

答:在终端中运行 rm -rf ~/Library/Developer/Xcode/DerivedData

问:如果我在修改 Podfile 后仍然遇到错误怎么办?

答:尝试更新到最新版本的 Flutter 和相关的包。你也可以在 Flutter 社区寻求帮助。

问:如何集成 MetaMask 和 OpenStreetMap 插件?

答:请参阅官方文档以获取详细指南。