我们在Xcode11 Beta的“框架,库和嵌入式内容”部分中提供了3个新选项,用于添加库。Xcode Libraries section screenshot
任何人都可以解释他们的工作吗?
答案 0 :(得分:3)
基本上在XCode 10的项目设置中(单击.xcodeproj文件,带有蓝色图标),您可以看到两个面向框架的部分-嵌入式二进制文件和链接的框架和库。现在,它们合并为一个。
Do Not Embed
选项基本上是将给定的.framework链接到项目中。
Embed & Sign
和Embed Without Signing
是旧的嵌入选项。
除了在组装过程中是否会签署框架这一事实外,我不确定其余两个之间的功能区别是什么。如果您想知道链接和嵌入之间的区别,那么here可以找到关于此的答案。
图片:
答案 1 :(得分:3)
@ przemyslaw-jablonski已经说过,这与XCode 10中的类似,但是仅在一个屏幕上(我个人喜欢!)。
如果您想知道是否需要将其嵌入到应用程序中:请勿嵌入静态框架和库(链接在构建时发生),而仅嵌入共享的框架和库(动态链接在构建时发生)运行时间,因此它们必须位于您的捆绑包中)。在命令行中调用file frameworkToLink.framework/frameworkToLink
会让您知道它是静态库(当前ar存档)还是共享库( Mach-O动态链接的共享库)。
如果您想知道是否需要签名:如果尚未签名,则无需这样做,您可以通过以下方法调用codesign -dv frameworkToLink.framework
命令行。
答案 2 :(得分:1)
它是Dependency
管理[About]
[Pre Xcode v11 Link Binary and Embed binary]
Xcode v11具有Frameworks, Libraries, and Embedded Content
。
Do Not Embed
Static Linker
在编译时尝试使用Build Settings -> Framework Search Paths
Do Not Embed
是Build Phases -> Link Binary With Libraries
的镜像。 Sign
是Code Sign On Copy
如果您未在此部分添加static framework
,则会出现编译错误[No such module]
Embed
它将框架的副本添加到完成包中。之后,Dynamic linker :dyld
在加载或运行时尝试使用@rpath
[About]找到嵌入式框架。如果未找到错误,将会发生[dyld: Library not loaded]
Embed
是Build Phases -> Embed Frameworks
的镜像。在这里,您可以设置捆绑包的文件夹和Subpath
。
结果: