XCODE 版本15.2.

  一个很久需求没更新的IOS 应用,近来有新需求要开发。 拉下代码运行,出现了个BAD_ACCESS错误。出错的位置位于一个调用的第三方的.a静态库内部。因为调用代码并没有修改,很容易想到可能XCODE相关升级,导致的问题。

  由于是第三方的一个.a动态库,兼容问题,优先考虑去升级下这个第三方库的最新版本。 Down 下来最新的版本的第三方库,比较了下大小,果然有更新,接下来就是如何更新这些静态库文集。

  这个出问题的第三方SDK 静态库,有40多个.a文件。 项目本身也还集成了其他的第三方.a文件。也有几十个。替换起来还是比较麻烦且带坑的,记录备忘下。

  1. 从Finder文件系统中将旧第三方的.a文件全部删除。所以最好提前给每个第三方sdk划分独立目录。

  2.从Targets 属性 的 “General”标签页下方的 “Frameworks,Libraries,and Embedded Content” 中,删除灰色的项。(灰色表示引用文件在文件系统中不存在)

  3.文件系统中将新的SDK 静态库文件,复制入文件夹。

  4.从Target 属性的 “Build Phases” 标签页中的 “Link Binary WIth Libraries”中,点击“”,选择添加Files,多选第3步文件夹中的全部依赖库文件点加入。

  5.重新编译。

  坑:注意第4步,不要通过“General”标签页下方的 “Frameworks,Libraries,and Embedded Content” 分栏添加依赖的静态库,理论上应该是等效的,但似乎Xcode 存在bug。 我第一次全选批量添加时,链接阶段找不到符号,检查确实没有将全选文件添加全。重新全选添加一次后,能够正常链接,执行阶段仍然BAC_ACCESS错误,与替换.a库文件前相同,且会存在某些链接库重复被忽略的警告。通过 “Build Phases” 则一次成功,运行正常。

  

  

XCODE IOS 静态链接库替换升级的更多相关文章

  1. App开发流程之数据持久化和编译静态链接库

    先记录数据持久化. iOS客户端提供的常用数据持久化方案:NSUserDefaults代表的用户设置,NSKeydArchiver代表的归档,plist文件存储,SQLite数据库(包括上层使用的Co ...

  2. GCC 编译使用动态链接库和静态链接库

    1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...

  3. GCC 编译使用动态链接库和静态链接库的方法

    1 库的分类 依据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的.所以生成的可执行文件就不受库的影响了.即使库被删除了,程序依旧能够成功执行. 有别于静态库,动态库的链接是在程 ...

  4. 【转】gcc 编译使用动态链接库和静态链接库

    1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有 ...

  5. [转载]GCC 编译使用动态链接库和静态链接库--及先后顺序----及环境变量设置总结

    来自http://blog.csdn.net/benpaobagzb/article/details/51364005 GCC 编译使用动态链接库和静态链接库 1 库的分类 根据链接时期的不同,库又有 ...

  6. linux动态链接库和静态链接库

    Linux下静态链接库与动态链接库的区别 引言 通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件 (object file)与牵涉到的函数库(librar ...

  7. vc下的静态链接库与动态链接库(一)

    一.静态库与动态库的区别 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Lib ...

  8. C/C++ 静态链接库(.a) 与 动态链接库(.so)

    平时我们写程序都必须 include 很多头文件,因为可以避免重复造轮子,软件大厦可不是单靠一个人就能完成的.但是你是否知道引用的那些头文件中的函数是怎么被执行的呢?这就要牵扯到链接库了! 库有两种, ...

  9. Linux下动态链接库和静态链接库

    第一部分:编译过程 先了解一下linux下C代码的编译过程,C代码的编译,一般分成四个阶段,包括:预编译,编译,汇编和链接,这四个阶段的分工是 预处理过程,负责头文件展开,宏替换,条件编译的选择,删除 ...

  10. 动态链接库dll,静态链接库lib, 导入库lib

    转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html 目前以lib后缀的库有两种,一种为静态链接库(Static Libar ...

随机推荐

  1. 什么是MircoPython?

    摘要:互联网玩家为了让Python这样的容易学,简单易学.社区API丰富的语言可以在嵌入式领域用上,逐渐开始了一轮Python上嵌入式的迁移,这样就有了今天的主角--MircoPython. 本文分享 ...

  2. 不会使用Spring的配置文件,赶紧把这个甩给他

    摘要:文章从Spring程序的快速使用.Bean标签的使用和其属性的具体使用,每个属性都用代码来解释,运行结果和案例也写的都很明白. 本文分享自华为云社区<怎样使用Spring的配置文件?带大家 ...

  3. Vuex在TSX中的改造方案:TS改造Vue2项目Vuex如何处置?

    vuex目前比较流行的有:vuex-aggregate . vuex-class.vuex-module-decorators npm搜到相关的,看下趋势图:https://www.npmtrends ...

  4. C# async await 异步执行方法

    WPF 异步执行 Action<> Func<> https://www.cnblogs.com/vipsoft/p/4535037.html 代码如下 using Syste ...

  5. PPT 用图片轻松做出高大上的精修

    PPT 用图片轻松做出高大上的精修 图片留白充分 图片很花 文字和图片中间,插入一个透明背景 单图片型 放大+色块 左右分割 上下分割 用一个容器 图形结合 多图型 图片并列

  6. 互联网公司Python高性能编程

    虽然Python一直被吐槽执行速度慢,但是架不住简洁的语法和丰富的第三方库使其能够节省开发时间.众所周知在互联网公司中要求频繁的迭代.快速的上线,而Python的优点就特别适合这种需求,所以Pytho ...

  7. ThrottleStop设置

    主界面 选项界面 在主界面点击"Options"按钮进入选项界面 给CPU降压 在主界面点击"FIVR"按钮进入如下界面 如上图所示,我自己的电脑,降压49.8 ...

  8. P1379 八数码难题 ( A* 算法 与 IDA_star 算法)

    P1379 八数码难题 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初 ...

  9. <vue 基础知识 7、循环遍历>

    代码结构 一.     01-v-for遍历数组 1.效果 2.代码 01-v-for遍历数组.html <!DOCTYPE html> <html lang="en&qu ...

  10. 《深入理解计算机系统》(CSAPP)读书笔记 —— 第五章 优化程序性能

    写程序最主要的目标就是使它在所有可能的情况下都正确工作.一个运行得很快但是给出错误结果的程序没有任何用处.程序员必须写出清晰简洁的代码,这样做不仅是为了自己能够看懂代码,也是为了在检査代码和今后需要修 ...