ios “不嵌入”,“嵌入并签名”,“嵌入但不签名”,它们是什么?,它们做什么?

hmtdttj4  于 2023-02-10  发布在  iOS
关注(0)|答案(4)|浏览(619)

我们在Xcode11 Beta的“框架、库和嵌入式内容”部分新增了3个用于添加库的选项。

Xcode库部分屏幕截图

有人能解释一下他们是干什么的吗?

t98cgbkg

t98cgbkg1#

  • 正如@przemyslaw-jablonski所说,这与Xcode 10中的类似,但只有一个屏幕(我个人很喜欢!)*。

嵌入

  • 不要嵌入静态框架和库(链接发生在构建时),只嵌入共享框架和库(动态链接发生在运行时,因此它们需要在您的包中)。*

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 alladhoc:选择Embed and sign
  • 任何其他事项:已正确签名,请选择Embed Without Signing
rjjhvcjd

rjjhvcjd2#

基本上在Xcode 10的项目设置中(点击. xcodeproj文件,蓝色图标),你可以看到两个面向框架的部分--嵌入式二进制文件和链接框架和库。
Do Not Embed选项基本上是将给定的. framework链接到项目。
Embed & SignEmbed Without Signing是旧的嵌入选项。
我不完全确定最后两者之间的功能区别是什么,除了框架在组装过程中会或不会被签名。如果你想知道链接和嵌入之间的区别,那么here你可以找到这样的答案。
图片:

epfja78i

epfja78i3#

    • Xcode v11.框架、库和嵌入式内容以及包含嵌入与不嵌入的框架和库**

历史

Embedded Binaries, Linked Frameworks and Libraries -> Frameworks, Libraries, and Embedded Content

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会在加载或运行时尝试使用@rpathAbout(https://stackoverflow.com/a/59216681/4770877)查找嵌入式框架如果找不到,则会出现错误dyld: Library not loaded(https://stackoverflow.com/a/59216681/4770877)
EmbedBuild Phases -> Embed Frameworks的镜像。在这里您可以设置bundle的文件夹和Subpath

    • 不嵌入**

Static Linker在编译时尝试使用Build Settings -> Framework Search Paths将代码从静态库复制到可执行目标文件中
Do Not EmbedBuild Phases -> Link Binary With Libraries的镜像。SignCode Sign On Copy的镜像
如果不将static framework添加到此部分,则会出现编译错误No such module(https://stackoverflow.com/a/59216742/4770877)
结果:

  • 静态库
  • 静态框架-不嵌入
  • 动态框架-嵌入

  • 请注意,Embedding的优先级高于Mach-O TypeAbout(https://stackoverflow.com/a/61035316/4770877)
  • 应用程序的Frameworks, Libraries...Embed,框架的Mach-OStatic Library-结果动态框架。
  • 应用程序的Frameworks, Libraries...Do Not Embed,框架的Mach-ODynamic Library,结果错误dyld: Library not loadedAbout(https://stackoverflow.com/a/59216681/4770877)
App's Embed (Dynamic) -> Framework's Mach-O Static - Dynamic
App's Do Not Embed(Static) -> Framework's Mach-O Dynamic - error

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)

cuxqih21

cuxqih214#

完整的故事holyswift

了解更多details

相关问题