“请勿嵌入”,“嵌入并签名”,“未经签名嵌入”。这些是什么?。他们做什么?

2020/12/01 06:42 · ios ·  · 0评论

Xcode11 Beta的“框架,库和嵌入式内容”部分中有3个新选项可用于添加库。

Xcode库部分屏幕截图

在此处输入图片说明

谁能解释他们的工作?

正如@ przemyslaw-jablonski所说的,这类似于XCode 10中的内容,但是只在一个屏幕上(我个人喜欢!)。


嵌入

不要嵌入静态框架和库(链接在构建时发生),而仅嵌入共享的框架和库(动态链接在运行时发生,因此它们需要包含在捆绑包中)。

file frameworkToLink.framework/frameworkToLink 将返回:

  • current ar archive:静态库,选择 Do not embed
  • Mach-O dynamically linked:共享库,选择 Embed

签名(仅在共享/嵌入时)

如果它已经具有适当的签名,则不需要(adhoc不计算在内)。

codesign -dv frameworkToLink.framework 将返回:

  • code object is not signed at alladhoc:选择Embed and sign
  • 其他:已正确签名,请选择 Embed Without Signing

基本上在项目设置的XCode 10中(单击.xcodeproj文件,带有蓝色图标),您可以看到两个面向框架的部分-嵌入式二进制文件和链接的框架和库。现在,它们合并为一个。

Do Not Embed 选项基本上是将给定的.framework链接到项目中。

Embed & Sign并且Embed Without Signing是旧的嵌入选项。

除了框架在组装过程中是否会签名这一事实外,我不完全确定后两者之间的功能区别是什么。如果您想知道链接和嵌入之间的区别,则可以在此处找到答案。

图片:

XCode 10

XCode 11

它是Dependency管理的一部分[关于]

[Xcode v11之前的链接二进制文件和嵌入二进制文件]

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 LibrariesSign是...的一面镜子Code Sign On Copy

如果您未static framework在此部分添加,则会出现编译错误[无此类模块]

Embed

它将框架的副本添加到完成包中。之后,Dynamic linker :dyld加载或运行时尝试使用[关于]查找嵌入式框架。如果未找到,则会发生错误[dyld:未加载库]@rpath

Embed是的一面镜子Build Phases -> Embed Frameworks在这里您可以设置包的文件夹和Subpath

结果:

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


[使用链接和嵌入时]

[词汇]

本文地址:http://ios.askforanswer.com/qingwuqianruqianrubingqianmingweijingqianmingqianruzhexieshishenmetamena.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!