iOS runtime

(转)iOS 静态库和动态库(库详解)

2019-10-14  本文已影响0人  大成小栈

原文地址:https://www.cnblogs.com/junhuawang/p/7598236.html

什么是库 ?

库就是程序代码的集合,将N个文件组织起来,是共享程序代码的一种方式。库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。

库的分类

静态库和动态库的存在的形式

静态库和动态库的区别

   不同点

静态库的处理方式

动态库的处理方式

因为动态库在链接函数需要做大量的工作,而静态库已经实现处理好了。所以单纯的在所有都没有加载的情况下,静态库的加载速度会更快一点。而在 iOS 开发中的『库』(一) 提到的有所不妥,正确应该是,虽然动态库更加耗时,但是对于在加载过的share libraries不需要再加载的这个前提下,使用动态库可以节省一些启动时间。

从源代码到app

当我们点击了 build 之后,做了什么事情呢?

相关动态库和静态库的创建

动态库动态更新问题

能否动态库的方式来动态更新AppStore上的版本呢?

framework本来是苹果专属的内部提供的动态库文件格式,但是自从2014年WWDC之后,开发者也可以自定义创建framework实现动态更新(绕过apple store审核,从服务器发布更新版本)的功能,这与苹果限定的上架的app必须经过apple store的审核制度是冲突的,所以含有自定义的framework的app是无法在商店上架的,但是如果开发的是企业内部应用,就可以考虑尝试使用动态更新技术来将多个独立的app或者功能模块集成在一个app上面!(我开发的就是企业内部使用的app,我们将企业官网中的板块开发成4个独立的app,然后将其改造为framework文件最终集成在一款平台级的app当中进行使用,这样就可以在一款app上面使用原本4个app的全部功能!)

**  使用自定义的动态库的方式来动态更新只能用在 in house(企业发布) 和develop 模式却但不能在使用到 AppStore **因为在上传打包的时候,苹果会对我们的代码进行一次 Code Singing,包括 app 可执行文件和所有Embedded 的动态库。因此,只要你修改了某个动态库的代码,并重新签名,那么 MD5 的哈希值就会不一样,在加载动态库的时候,苹果会检验这个 hash 值,当苹果监测到这个动态库非法时,就会造成 Crash

iOS 如何使用 framework 来进行动态更新!

重要参考文档(一定要看):

  1. iOS 利用 Framework 进行动态更新

谈谈 Mach-O

image

原文地址:https://www.cnblogs.com/junhuawang/p/7598236.html

上一篇 下一篇

猜你喜欢

热点阅读