我很困惑在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中的文本可能包含当前版本。这将是一个工件,其中压缩工具将符号链接存储为文本而不是实际链接。
我们正面临着类似的问题。我们得到的结果是一样的,但设置是不同的。
在这里发布我们的发现,让别人觉得它很有用。
我们的应用程序高级设置
.xcodeproj
在一个.workspace
下.xcodeproj
有一个.framework
,显示上述问题我们的发现(到目前为止)
git checkout
导致.framework行为中的符号链接剥离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/