静态库和动态库

embed的意思 是嵌入, 动态库用do not embed, 保证全局唯一, 静态库用embed, 可能会重复引用, 造成包体积大

  1. 两个静态库中如果有相同的静态库(比如系统的libc++, libstdc++), 那么暴露的类或者方法也可能会有多份, 造成无效或者冲突导致崩溃
  2. 动态库打包的时候选择do not embed, 否则这个动态库中静态库如果包含了相同的动态库, 那么暴露的类或者方法也可能会有多份, 造成无效或者冲突导致崩溃(AppService中包含静态库魔链, 在引入佳物的静态库, 编译成功后执行到某方法就会报错)
  3. 静态库一定要选择embed, 否则会报 undefined symbol, (ps: image not found 一般是动态库找不到)
  4. 如果在动态库中有静态库, 则需要通过脚本在主工程中将静态库embed, 这样在工程在编译的时候会把pods中静态库单独拎出来打到主工程的二进制中, 剩下的动态库统一打在pods库中, 全局唯一, 否则该动态库会报no such module,
  5. 解决两个静态库冲突的办法, 就是将两个静态库打到不同的动态库中, 这样他们就会被打包成不同的二进制, 就不会互相链接, 就不会互相影响了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在其它大部分平台上,动态库都可以用于不同应用间共享, 共享可执行文件,这就大大节省了内存。iOS平台 在 iOS8...
    CodingTom阅读 7,853评论 0 1
  • 库的本质是可执行的二进制文件,是资源文件和代码编译的一个集合。根据链接方式不同,可以分为动态库和静态库,其中系统提...
    FieryDragon阅读 4,196评论 0 3
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 14,153评论 3 42
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 11,020评论 0 5
  • 昨天,在回家的路上,坐在车里悠哉悠哉地看着三毛的《撒哈拉沙漠的故事》,我被里面的内容深深吸引住了,尽管上学时...
    夜阑晓语阅读 9,200评论 2 9