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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode框架版本/当前/标题/错误相关的知识,希望对你有一定的参考价值。

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

以下是步骤:

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

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

Everything works fine, here is the screenshot:

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

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

这是截图:

enter image description here

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

提前致谢!

答案

我今天遇到了这个问题,因为第三方框架是作为.zip文件提供的,框架内部的符号链接在某些时候丢失了。

以下是Apple关于框架解剖的文档:

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

该文档解释了框架包内可能存在多个框架版本,因此该包包含一些指向某些目录的当前版本的符号链接。

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记录的三个符号链接(MyFramework,Resources,Versions / Current)不是符号链接,而是微小的文件。然后删除这些小文件,并用符号链接替换为当前框架版本。例如,如果当前版本为“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中的文本可能包含当前版本。这将是一个工件,其中压缩工具将符号链接存储为文本而不是实际链接。

另一答案

我们正面临着类似的问题。我们得到的结果是一样的,但设置是不同的。

在这里发布我们的发现,让别人觉得它很有用。

我们的应用程序高级设置

  • React Native应用程序
  • Git回购
  • npm用于包管理(npm install)
  • 很多.xcodeproj在一个.workspace
  • 其中一个.xcodeproj有一个.framework,显示上述问题

我们的发现(到目前为止)

  • 这不是实际的git checkout导致.framework行为中的符号链接剥离
  • 它实际上是我们的包管理器(npm)如何安装所述子仓库。可能是npm正在做一些事情来删除安装或安装后阶段的符号链接。
  • 如果我们手动下载或git checkout所述子仓库,框架符号链接是完整的。

我们最初解决问题的方法

  • 在主项目中包含符号链接框架的完整版本(Valid.framework)。
  • 使用npm install正常安装软件包(这将删除子repo中框架Broken.framework文件中的符号链接)
  • 有一个安装后脚本副本和/或覆盖Broken.frameworkValid.framework
  • cp -Rf <path_to_working_framework>/Valid.framework/* node_modules/<path_to_broken_framework>/Broken.framework/

以上是关于Xcode框架版本/当前/标题/错误的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 兼容性的 Swift 框架问题

Xcode 5 + Sparkle + 代码签名

Xcode 7 和基于 swift 的框架

Xcode 可以静态地针对旧版本的框架构建吗?

Xcode 4.6 的备份代码片段

错误 ITMS-90596 / Xcode 的 GM 版本 / Phonegap