* .framework,*。dylib和* .a` libs有什么区别

时间:2019-06-04 03:05:16

标签: ios xcode dylib .a

我有一个项目,在框架中,有scala> import java.io.ByteArrayInputStream import java.io.ByteArrayInputStream scala> import scala.sys.process._ import scala.sys.process._ scala> val cmd = List("cat") cmd: List[java.lang.String] = List(cat) scala> val inputString = "hello\nworld" inputString: java.lang.String = hello world scala> val inputStream = new ByteArrayInputStream(inputString.getBytes("UTF-8")) inputStream: java.io.ByteArrayInputStream = java.io.ByteArrayInputStream@28d101f3 scala> val outputStream: Stream[String] = (cmd #< inputStream).lineStream_! outputStream: Stream[String] = Stream(hello, ?) scala> println(outputStream.mkString("\n")) hello world *.framework*.dylib个库。

's the

我想知道它们是什么?以及它们之间的区别。

1 个答案:

答案 0 :(得分:4)

动态库和静态库

首先,库是为一个或多个体系结构编译的资源和代码本身的集合。

静态库(* .a):

  

对于static libraries (*.a),应用使用的代码为   在静态链接器复制到生成的可执行文件的过程中   编译时间。

动态库(* .dylib):

  

Dynamic libraries (*.dylib)与静态库中的   感觉它们在运行时与应用程序的可执行文件相关联,但是   没有复制到它。结果,可执行文件较小,并且   因为仅在需要时才加载代码,所以启动时间为   通常更快。

动态和静态框架:

  

对于框架,我们首先需要了解bundle概念(作为   框架是捆绑的一种特定类型)。捆绑包是一个文件   包含子目录的目录。在iOS上,捆绑包可用于   方便地将相关文件打包在一起打包-用于   实例,图像,笔尖或编译后的代码。系统将其视为一个   文件,您可以在不知道其内部的情况下访问捆绑软件资源   结构。

     

该库可能还具有其他资源:标题,本地化   文件,图像,文档和使用示例。我们可以捆绑所有   捆绑在一起,这就是框架。

     

静态框架包含一个与其一起打包的静态库   资源。动态框架包含动态库及其   资源。除此之外,动态框架还可以方便地   在同一个动态库中包含不同版本   框架!

其他有用的参考文献:

Hackernoon

Runtastic

Static library

Software framework

更新:

感谢接受我的回答!

针对一种或多种体系结构进行了编译?

  

每种架构都需要不同的二进制文件,并且在构建   无论您身在何处,应用程序Xcode都能构建正确的架构   目前正在使用。例如,如果您要求它在   模拟器,那么它只会构建i386版本(或x86_64   64位)。

     

这意味着构建速度要尽可能快。当您存档   应用程序或在发布模式下构建,则Xcode将为所有三个ARM构建   架构,因此允许该应用在大多数设备上运行。什么   关于其他版本?

     

自然,在构建框架时,您希望开发人员成为   能够将其用于所有可能的架构,对吗?当然可以   因为那将意味着您可以赢得您的尊重和钦佩   同行。

     

因此,您需要为所有五种体系结构构建Xcode。   此过程将创建一个所谓的胖二进制文件,其中包含一个切片   每种架构。

arm7: Used in the oldest iOS 7-supporting devices
arm7s: As used in iPhone 5 and 5C
arm64: For the 64-bit ARM processor in iPhone 5S
i386: For the 32-bit simulator
x86_64: Used in 64-bit simulator

Raywenderlich: Multi-Architecture