未找到框架 FBLPromises(Swift 包管理器)

Gem*_*mms 14 xcode swift swift-package-manager

我在其他地方看到过这个问题,但它似乎总是与 Firebase 的 Cocoapods 安装有关。我的问题是相反的 - 当我尝试编译时,尝试从 pod 升级到 SPM 给了我这个问题:

ld: framework not found FBLPromises
Run Code Online (Sandbox Code Playgroud)

我目前在配备 M1 芯片的 Mac Mini 上运行 Xcode 13.3,但问题出现在早期版本的 Xcode 中。

之前我通过 SPM 安装了 Disk ( https://github.com/saoudrizwan/Disk ),通过 Cocoapods 安装了 Firebase/Messaging 和 Twilio (5.5.1)。我运行pod cleanpod deintegrate删除了所有 Pod 文件等,并使用 SPM 安装了 Twilio 和 Firebase Messaging。这给了我以下包​​依赖项(并且您可以看到 Promises 2.0.0 已成功添加):

包依赖关系

当我研究这个问题时,我得到的最重要的结果是FBLPromises Framework not find,第二个答案建议将arm64添加为排除的架构,但这样做会给我带来进一步的问题(下面的警告和错误),我宁愿不排除盲目地构建架构,然后陷入困境,试图解决这个问题,因为它可能无法解决我最初的问题。

当我尝试排除arm64架构时出现警告和错误:

None of the architectures in ARCHS (arm64) are valid. Consider setting ARCHS to $(ARCHS_STANDARD) or updating it to include at least one value from VALID_ARCHS (arm64, arm64e, armv7, armv7s) which is not in EXCLUDED_ARCHS (arm64).

error: Build input file cannot be found: '/Users/myName/Library/Developer/Xcode/DerivedData/project-exchrqebmyccatebeoxupvxpdsul/Build/Products/Debug-iphoneos/project.app/project' (in target 'project' from project 'project')

Gem*_*mms 20

我没有检查以确保我没有进一步引入其他错误,但我认为问题是由构建设置中保留的链接器标志引起的。

我转到 Target -> Build Settings -> Linking 并删除了“其他链接器标志”下的所有内容(OTHER_LDFLAGS 是根据我的 git diff 在 project.pbxproj 文件中反映的方式)。

文件现在已成功编译并运行,如果我稍后发现可能由此引起的一些细微错误,我将相应地编辑此答案!

  • 我在将包从 Cocoapods 切换到 SPM 时遇到了这个问题,这绝对是正确的解决方案。谢谢你! (7认同)
  • 实际上,您不需要删除所有链接器标志,只需删除导致问题的框架即可。但问题是为什么这有效?为什么链接器标志中添加了框架?与 Cocoapods 一起安装时是否会自动添加某些内容,并且在迁移到 SPM 时会导致问题? (2认同)