ios - Xcode 框架版本/当前/标题/错误

标签 ios xcode frameworks mercurial

我对在 Xcode 项目中添加第三方框架感到困惑。

以下是步骤:

1)我将框架复制到名为“Frameworks”的项目子文件夹中。所以框架被添加到存储库中。

一切正常,应用程序编译,这里是截图:

Everything works fine, here is the screenshot:

2)我将更改推送到存储库(我使用 mercurial)

3)如果我在其他机器上进行更改或只是在分支之间切换,则项目不再识别此框架。

这是屏幕截图:

enter image description here

问题是它为什么会发生以及如何解决这个问题?在这种情况下,我有什么具体的方法可以添加框架吗?

提前致谢!

最佳答案

我今天遇到了这个问题,这是因为第 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/

相关文章:

ios - Ios 中视频上的文本动画

ios - Xcode 在尝试构建以在设备上运行时卡在复制文件上

ios - 如何以编程方式更改名称以区分 Xcode 可视化调试器中的 UIView?

java - Android-ReSTLet

ios - 使用 c++11 代码构建 Cocoa touch 框架

ios - 应用程序在 iOS 11 中启动时崩溃并出现 "dyld: Library not loaded"错误,但在 iOS 10.3.2 和 Xcode 8.3.3 中运行良好

iphone - 如何在 xcode4 中查看高分辨率

ios - 在 UITableView 中设置自定义标题 View

适用于 Objective-c 的 IOS Admob 插页式广告

ios - 在没有 1x 版本的情况下添加 @2x 和 @3x 图片