8

环境

  • MacBook Pro(13 英寸,2017 年,两个雷雳 3 端口)
  • 大苏尔 11.3.1
  • Xcode 12.5
  • Apple Swift 5.4 版 (swiftlang-1205.0.26.9 clang-1205.0.19.55)
  • 目标:x86_64-apple-darwin20.4.0

问题

直到 Xcode 12.4,我们使用这个解决方法来获取我们项目的框架,这些框架是捆绑包的形式(黄色公文包图标)。此外,我需要为Carthage Copy File我的每个目标手动雕刻一个脚本(在构建阶段下),这很烦人且容易出错。

几天前,我阅读了 Carthage 官方文档,它建议使用xcframework. 从这些步骤听起来copy file不再需要烦人的步骤,我决定试一试。

我完全遵循了迁移步骤。我还更改了框架搜索路径,使其指向从$(PROJECT_DIR)/YOUR_PROJECT/Carthage/Build/iOS$(PROJECT_DIR)/YOUR_PROJECT/Carthage/Build。该应用程序刚刚在模拟器中运行,但现在振作起来还为时过早,每当我尝试在 iPhone 中运行它时它就会崩溃。在调试器控制台中它抱怨

dyld: Library not loaded: @rpath/Auth0.framework/Auth0
  Referenced from: /private/var/containers/Bundle/Application/9575D8AA-BD35-447B-ACC3-F8545CDB62EE/FIT dev.app/FIT dev
  Reason: image not found
dyld: launch, loading dependent libraries
DYLD_LIBRARY_PATH=/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Developer/usr/lib/libBacktraceRecording.dylib:/Developer/usr/lib/libMainThreadChecker.dylib:/Developer/Library/PrivateFrameworks/DTDDISupport.framework/libViewDebuggerSupport.dylib

解决方案

终于,我看到了 2 年前的这篇Medium 帖子embed & sign,它向被拖放到项目中的框架提出了建议。Embed我通过将一些框架的状态从Do not embed更改为Embed & Sign(从选项卡)对我的项目做了同样的事情General/Frameworks, Libraries and Embedded Content

答对了!该项目在模拟器和真机上运行,​​UI测试也和以前一样运行。

Carthage 官方文档中的迁移步骤根本没有提到这一步。另外,我找不到任何解决类似问题的帖子。所以我只想分享我的迁移步骤,希望这可能会有所帮助

  • 完全遵循迁移步骤(如果您有多个目标,这里的技巧是将所有 xcframeworks 放在/Frameworks文件导航器中的组下,这样您就可以一次性将 xcframeworks 链接到所有目标)

在此处输入图像描述

在此处输入图像描述

  • 为您新添加的 xcframeworks设置embed状态,请参阅下面的快照,我将框架分为三组

    • 绿色,第三方库,例如 auth0,alamofire ->Embed and Sign
    • 橙色 -> 开发库 ->Embed and Sign
    • 其余的,在我的例子中是用于 Firebase 的 xcframeworks ->Do not embed

设置嵌入状态

4

1 回答 1

2

我已经回答了我的问题,请看问题,谢谢:)

于 2021-05-28T20:49:40.043 回答