Xcode框架版本/当前/标题/错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xcode框架版本/当前/标题/错误相关的知识,希望对你有一定的参考价值。
我很困惑在Xcode项目中添加第三方框架。
以下是步骤:
1)我将框架复制到名为“Frameworks”的项目子文件夹中。因此框架被添加到存储库。
一切正常,应用程序编译,这是截图:
2)我将更改推送到存储库(我使用mercurial)
3)如果我在其他机器上提取更改或仅在分支之间切换,则项目不再识别此框架。
这是截图:
问题是它为什么会发生以及如何解决这个问题?在这种情况下,我有什么特定的方法来添加框架吗?
提前致谢!
我今天遇到了这个问题,因为第三方框架是作为.zip文件提供的,框架内部的符号链接在某些时候丢失了。
以下是Apple关于框架解剖的文档:
该文档解释了框架包内可能存在多个框架版本,因此该包包含一些指向某些目录的当前版本的符号链接。
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.framework
与Valid.framework
cp -Rf <path_to_working_framework>/Valid.framework/* node_modules/<path_to_broken_framework>/Broken.framework/
以上是关于Xcode框架版本/当前/标题/错误的主要内容,如果未能解决你的问题,请参考以下文章