转自鸟哥的博客:http://blog.cnrainbird.com

如果你的工程没有使用第三方的静态库或者framework,那么看完旧工程适配iOS6和iPhone5的一些故事基本上适配也就结束了,可是像笔者这样有的工程里用到第三方库了,打包的时候还会提示下面的问题:

ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/rainbird/Desktop/myapp/iFileManager/iFileManager/ZBarSDK/libzbar.a for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

上面的提示就是我使用的libzbar这个库不支持armv7s。

关于第三方库,如果是闭源的,像一些广告的SDK以及合作方提供的SDK就只能等了,人家啥时候更新啥时候算。像我遇到的ZBarSDK,这种第三方开源的SDK,就不要等了,还是自已动手丰衣足食吧。

首先关于闭源的库,一个临时的解决办法就是,先取消对armv7s的支持,这样就可以不用等第三方的库就开始测试了,办法是:

在Xcode里,点击相应的Target,然后点Build Settings,找到VALID_ARCHS,然后删除里面的arvm7s,就可以了。

ok,上面只是临时解决办法,说正事儿。以编译ZBar为例:

1.去Zbar的主页,下载源码包。

2.解压以后,进入里面的iPhone文件夹,删除里面的Examples,双击zbar.xcodeproj运行工程。

3.Command+B编译工程(当然了这一步会提醒更新Setting,建议更新完以后再运行)。

4.然后在lib上点右键去目录里找喽。

ok,本来故事到这里应该就结束了,但是上面找到的那个文件,只能在真机用,模拟器用不了,怎么办呢?

进入到这个工具的Build目录,会看到下面这些目录

Debug-iphoneos/          Debug-iphonesimulator/   Release-iphoneos/        Release-iphonesimulator/

自已动手将模拟器的包和真机的包合并一下就好了。

[rainbird@localhost Products]$ pwd
/Users/rainbird/Library/Developer/Xcode/DerivedData/zbar-athgobfbdtwgftgcogpuwegpawlj/Build/Products
[rainbird@localhost Products]$ lipo -create Release-iphoneos/libzbar.a Release-iphonesimulator/libzbar.a -o libzbar.a

解释一下lipo合并两个库的命令:lipo -create第一个包 第二个包 -o合并以后的包

这样的话,得到的libzbar.a就可以同时在模拟器和真机用了。这里有个小插曲,静态库编译一次,会生成所有的包,而我一上来就用的真机上的包,然后模拟器上用不了,又在真机的位置找了半天,以为生成不了模拟器的包,哎,思维定势了。

关于lipo还有一个常用的命令就是查看包的信息-info参数

[rainbird@localhost Products]$ lipo -info libzbar.a
Architectures in the fat file: libzbar.a are: armv7 (cputype (12) cpusubtype (11)) i386

旧工程适配iOS6和iPhone5续之第三方静态库相关推荐

  1. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

  2. 创建制作SDK的静态库工程

    因为公司需要持续性向别人提供一套蓝牙锁SDK,按照传统的方式打包静态库真是太痛苦,SDK依赖的一些私有库会有频繁的更新,依赖的第三方库也是错综复杂.我迫切需要找到一种更方便的打包静态库的方式,既能随时 ...

  3. C++ 工程实践(5):避免使用虚函数作为库的接口

    https://blog.csdn.net/solstice/article/details/6244905 摘要:作为 C++ 动态库的作者,应当避免使用虚函数作为库的接口.这么做会给保持二进制兼容 ...

  4. vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题

    vue-cli3.0结合lib-flexible.px2rem实现移动端适配,完美解决第三方ui库样式变小问题 参考文章: (1)vue-cli3.0结合lib-flexible.px2rem实现移动 ...

  5. vue中使用第三方UI库的移动端rem适配方案

    需求:使用vue-cli脚手架搭建项目,并且使用第三方的UI库(比如vant,mint ui)的时候,因为第三方库用的都是用px单位,无法使用rem适配不同设备的屏幕. 解决办法:使用px2rem-l ...

  6. Win10+vs2013+Caffe静态库配置自己的工程

    Win10+vs2013+Caffe静态库配置自己的工程 转载请注明原出处:http://blog.csdn.net/ouyangfushu/article/details/79450501 作者:S ...

  7. Qt工程pro文件的配置和头文件和库的添加

    Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以"# ...

  8. 静态库制作-混编(工程是oc为基础)

    最近工作需要,需要制作一些静态库.由于缺乏经验,特意找了一些资料,加上自己的测试.特意在此记录一些心得和踩过的坑.所谓"好记性不如烂笔头",希望自己以后忘记的时候能回头来看看,同时 ...

  9. 使用pthread-win32工程编译静态库

    1.准备工作 pthread-win32的下载地址:https://sourceware.org/pthreads-win32/#download 2.编译pthread-win32静态库 (1).解 ...

最新文章

  1. 第 4 章 Glance - 022 - 如何使用 OpenStack CLI
  2. 什么是脏读,不可重复读,幻读
  3. java小编程----电话号码组合
  4. 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架
  5. 北京航空航天大学计算机科学与工程系,北航郑征主页 北京航空航天大学教师个人主页系统...
  6. linux docker run怎么退出,详解如何进入、退出docker容器的方法
  7. 64位 linux 中 oracle 11g dbca 报 out of memory 错误
  8. 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程...
  9. 在Win10上安装VC6
  10. UAT测试,怎么做最有效
  11. SVN下载安装与使用
  12. Mars3D基础学习:地图图层 Layer
  13. 2021正睿csp7连day3
  14. 卡农,用敬仰和泪水思念着你~~~~~
  15. shell脚本之国际象棋棋盘
  16. PTA 7-59 二元一次方程的解
  17. 苹果吃鸡用什么蓝牙耳机好?苹果吃鸡低延迟蓝牙耳机品牌推荐
  18. iTextSharp,将多张图片合并生成PDF文件
  19. 2021海南安全员考试及(安全员)模拟考试答案解析
  20. 单点登录-CAS介绍

热门文章

  1. FFmpeg3.3.2+SDL2实现流媒体音频播放
  2. 用开放和流动反抗熵增,生态建设终极哲学——保险生态建设
  3. Lagrange对偶函数
  4. 微信原生小程序导入项目报错:[ app.json 文件内容错误] app.json: app.json 未找到
  5. Centos7的下载安装以及之后的基本操作【学习记录】
  6. light动名词_初中英语语法学习:动名词专项训练
  7. 光模块应用在交换机光纤收发器和路由器上互联方案
  8. fragment里面嵌套另一个fragment
  9. UG\NX二次开发 开发好几年,还只会用ufusr?其他用户入口函数介绍
  10. ERROR: torch-1.4.0+cpu-cp38-cp38m-win_amd64.whl is not a supported wheel on this platform.