基本上在Xcode 10的项目设置中(点击. xcodeproj文件,蓝色图标),你可以看到两个面向框架的部分--嵌入式二进制文件和链接框架和库。 Do Not Embed选项基本上是将给定的. framework链接到项目。 Embed & Sign和Embed Without Signing是旧的嵌入选项。 我不完全确定最后两者之间的功能区别是什么,除了框架在组装过程中会或不会被签名。如果你想知道链接和嵌入之间的区别,那么here你可以找到这样的答案。 图片:
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(https://stackoverflow.com/a/59216742/4770877) 结果:
4条答案
按热度按时间t98cgbkg1#
嵌入
file frameworkToLink.framework/frameworkToLink
将返回:current ar archive
:静态库,选择Do not embed
Mach-O dynamically linked
:共享库,选择Embed
签名(仅当共享/嵌入时)
codesign -dv frameworkToLink.framework
将返回:code object is not signed at all
或adhoc
:选择Embed and sign
Embed Without Signing
rjjhvcjd2#
基本上在Xcode 10的项目设置中(点击. xcodeproj文件,蓝色图标),你可以看到两个面向框架的部分--嵌入式二进制文件和链接框架和库。
Do Not Embed
选项基本上是将给定的. framework链接到项目。Embed & Sign
和Embed Without Signing
是旧的嵌入选项。我不完全确定最后两者之间的功能区别是什么,除了框架在组装过程中会或不会被签名。如果你想知道链接和嵌入之间的区别,那么here你可以找到这样的答案。
图片:
epfja78i3#
历史
Xcode pre-v11. Embedded Binaries, Linked Frameworks and Libraries(https://stackoverflow.com/a/59216858/4770877)一直存在到
General
选项卡中的Xcode v11部分它是
Dependency
管理About(https://stackoverflow.com/a/59215808/4770877)的一部分Xcode v11具有:
Frameworks, Libraries, and Embedded Content
Frameworks and Libraries
嵌入
它会将框架的副本添加到您的最终捆绑包中。之后,
Dynamic linker :dyld
会在加载或运行时尝试使用@rpath
About(https://stackoverflow.com/a/59216681/4770877)查找嵌入式框架如果找不到,则会出现错误dyld: Library not loaded(https://stackoverflow.com/a/59216681/4770877)Embed
是Build Phases -> Embed Frameworks
的镜像。在这里您可以设置bundle的文件夹和Subpath
。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(https://stackoverflow.com/a/59216742/4770877)结果:
Embedding
的优先级高于Mach-O Type
About(https://stackoverflow.com/a/61035316/4770877)Frameworks, Libraries...
是Embed
,框架的Mach-O
是Static Library
-结果动态框架。Frameworks, Libraries...
为Do Not Embed
,框架的Mach-O
为Dynamic Library
,结果错误dyld: Library not loaded
About(https://stackoverflow.com/a/59216681/4770877)Static vs Dynamic linker(https://stackoverflow.com/a/57741985/4770877)
When use Link and Embed(https://stackoverflow.com/a/57500670/4770877)
Vocabulary(https://stackoverflow.com/a/59216151/4770877)
cuxqih214#
完整的故事holyswift
了解更多details