我对在 Xcode 项目中添加第三方框架感到困惑。
以下是步骤:
1)我将框架复制到名为“Frameworks”的项目子文件夹中。所以框架被添加到存储库中。
一切正常,应用程序编译,这里是截图:
2)我将更改推送到存储库(我使用 mercurial)
3)如果我在其他机器上进行更改或只是在分支之间切换,则项目不再识别此框架。
这是屏幕截图:
问题是它为什么会发生以及如何解决这个问题?在这种情况下,我有什么具体的方法可以添加框架吗?
提前致谢!
最佳答案
我今天遇到了这个问题,这是因为第 3 方框架是作为 .zip 文件交付的,并且框架内的符号链接(symbolic link)在某些时候丢失了。
这是 Apple 关于框架剖析的文档:
https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html
该文档解释说,框架包中可能存在多个框架版本,因此该包包含一些指向某些目录当前版本的符号链接(symbolic link)。
MyFramework.framework/
MyFramework -> Versions/Current/MyFramework
Resources -> Versions/Current/Resources
Versions/
A/
MyFramework
Resources/
English.lproj/
InfoPlist.strings
Info.plist
B/
MyFramework
Resources/
English.lproj/
InfoPlist.strings
Info.plist
Current -> B
你遇到的问题和我的一模一样。确认 Apple 记录的三个符号链接(symbolic link)(MyFramework、Resources、Versions/Current)不是符号链接(symbolic link),而是小文件。然后删除小文件并将它们替换为当前框架版本的符号链接(symbolic link)。例如,如果当前版本是“A”:
cd NewRelicAgent.framework
rm Headers
rm NewRelicAgent
rm Versions/Current
ln -s Versions/Current Versions/A
ln -s Headers Versions/A/Headers
ln -s NewRelicAgent Versions/A/NewRelicAgent
如果您的框架中有多个版本,则 Versions/Current 中的文本可能包含当前版本。这将是一个工件,其中压缩工具将符号链接(symbolic link)存储为文本而不是实际链接。
关于ios - Xcode 框架版本/当前/标题/错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35412834/