带有框架的 Xcode 项目 - 库未加载

问题描述 投票:0回答:1

我正在为 macOS 应用程序启动一个新的 Xcode 项目。在最初的开发过程中,我发现应用程序的某些部分应该在不同的目标之间共享,例如macOS AppQuick Look等。目标是用户Framework。通过选择 Project navigator 中的

Project
并使用加号图标,我创建了一个新的框架目标并将其命名为
Shared

接下来,在我的应用程序项目中,我已将其添加到项目中并检查它是否正确链接。框架是

Embedded and Signed
。两个目标具有相同的签名和功能设置。

将代码移至Shared框架后,就到了第一次运行的时候了。不幸的是,该应用程序立即崩溃,我收到错误:

dyld[65044]: Library not loaded: @rpath/Shared.framework/Versions/A/Shared
Referenced from: 
<2B03FB61-86B3-31E5-A2A4-F18F43AEC875> /Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/AppName e.app/Contents/MacOS/AppName

Reason: tried: 
'/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/Shared.framework/Versions/A/Shared' 
(code signature in <DD201FE7-57E2-33B1-AD7C-E61BA1345673> '/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/Shared.framework/Versions/A/Shared' 

not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), 

'/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/AppName.app/Contents/Frameworks/Shared.framework/Versions/A/Shared' 

(code signature in <DD201FE7-57E2-33B1-AD7C-E61BA1345673> '/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/AppName.app/Contents/Frameworks/Shared.framework/Versions/A/Shared' 

not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), 

'/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/AppName.app/Contents/Frameworks/Shared.framework/Versions/A/Shared' 

(code signature in <DD201FE7-57E2-33B1-AD7C-E61BA1345673> 

'/Users/{User}/Library/Developer/Xcode/DerivedData/AppName-fjfbylcqrxaiobgohprplbaohgbw/Build/Products/Debug/AppName.app/Contents/Frameworks/Shared.framework/Versions/A/Shared' 

not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs)

在两个目标的构建设置中正确设置团队 ID。捆绑包标识符不同,其余设置似乎是正确的。我尝试更改和调整与签署框架相关的设置,但没有帮助。

我会很高兴获得一些帮助。

ios swift xcode macos mobile
1个回答
0
投票

错误消息表明共享框架存在代码签名问题。以下是一些可能的解决方案:

  1. 检查代码签名设置:仔细检查应用程序目标和共享框架目标的代码签名身份和配置文件是否设置正确。确保他们具有相同的团队 ID 和适当的签名设置。

  2. 清理并重建:尝试清理项目(产品>清理),然后重建它。这有时可以解决代码签名和框架嵌入的问题。

  3. 嵌入式框架设置:确保共享框架正确嵌入到应用程序目标中。转到应用程序目标的“常规”选项卡,然后在“嵌入式二进制文件”部分中,确保列出共享框架并具有有效路径。

  4. 框架搜索路径:验证应用程序目标的构建设置中的框架搜索路径设置是否包含共享框架的路径。

  5. 代码签名权利:检查应用程序目标的代码签名权利文件 (App.entitlements),并确保它包含共享框架的正确设置。

  6. 团队 ID 和配置文件:仔细检查两个目标的团队 ID 和配置文件是否正确。确保它们与您的 Apple 开发者帐户中的设置匹配。

  7. 删除派生数据:尝试删除派生数据文件夹(~/Library/Developer/Xcode/DerivedData)并重建项目。

  8. 重新创建框架目标:如果上述步骤都不起作用,请尝试从头开始重新创建共享框架目标并将其重新添加到应用程序目标。

如果您已检查所有这些设置但问题仍然存在,请考虑分享有关您的项目结构和设置的更多详细信息以获得进一步帮助。

© www.soinside.com 2019 - 2024. All rights reserved.