旧工程适配iOS6和iPhone5续之第三方静态库
转自鸟哥的博客: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续之第三方静态库相关推荐
- 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )
文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...
- 创建制作SDK的静态库工程
因为公司需要持续性向别人提供一套蓝牙锁SDK,按照传统的方式打包静态库真是太痛苦,SDK依赖的一些私有库会有频繁的更新,依赖的第三方库也是错综复杂.我迫切需要找到一种更方便的打包静态库的方式,既能随时 ...
- C++ 工程实践(5):避免使用虚函数作为库的接口
https://blog.csdn.net/solstice/article/details/6244905 摘要:作为 C++ 动态库的作者,应当避免使用虚函数作为库的接口.这么做会给保持二进制兼容 ...
- vue-cli3.0结合lib-flexible、px2rem实现移动端适配,完美解决第三方ui库样式变小问题
vue-cli3.0结合lib-flexible.px2rem实现移动端适配,完美解决第三方ui库样式变小问题 参考文章: (1)vue-cli3.0结合lib-flexible.px2rem实现移动 ...
- vue中使用第三方UI库的移动端rem适配方案
需求:使用vue-cli脚手架搭建项目,并且使用第三方的UI库(比如vant,mint ui)的时候,因为第三方库用的都是用px单位,无法使用rem适配不同设备的屏幕. 解决办法:使用px2rem-l ...
- Win10+vs2013+Caffe静态库配置自己的工程
Win10+vs2013+Caffe静态库配置自己的工程 转载请注明原出处:http://blog.csdn.net/ouyangfushu/article/details/79450501 作者:S ...
- Qt工程pro文件的配置和头文件和库的添加
Qt开发中,pro文件是对正工程所有源码.编译.资源.目录等的全方位配置的唯一方式,pro文件的编写非常重要,以下对几个重要项进行说明(win和linux,mac平台通用配置) 注释 以"# ...
- 静态库制作-混编(工程是oc为基础)
最近工作需要,需要制作一些静态库.由于缺乏经验,特意找了一些资料,加上自己的测试.特意在此记录一些心得和踩过的坑.所谓"好记性不如烂笔头",希望自己以后忘记的时候能回头来看看,同时 ...
- 使用pthread-win32工程编译静态库
1.准备工作 pthread-win32的下载地址:https://sourceware.org/pthreads-win32/#download 2.编译pthread-win32静态库 (1).解 ...
最新文章
- 第 4 章 Glance - 022 - 如何使用 OpenStack CLI
- 什么是脏读,不可重复读,幻读
- java小编程----电话号码组合
- 接口自动化 基于python+Testlink+Jenkins实现的接口自动化测试框架
- 北京航空航天大学计算机科学与工程系,北航郑征主页 北京航空航天大学教师个人主页系统...
- linux docker run怎么退出,详解如何进入、退出docker容器的方法
- 64位 linux 中 oracle 11g dbca 报 out of memory 错误
- 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程...
- 在Win10上安装VC6
- UAT测试,怎么做最有效
- SVN下载安装与使用
- Mars3D基础学习:地图图层 Layer
- 2021正睿csp7连day3
- 卡农,用敬仰和泪水思念着你~~~~~
- shell脚本之国际象棋棋盘
- PTA 7-59 二元一次方程的解
- 苹果吃鸡用什么蓝牙耳机好?苹果吃鸡低延迟蓝牙耳机品牌推荐
- iTextSharp,将多张图片合并生成PDF文件
- 2021海南安全员考试及(安全员)模拟考试答案解析
- 单点登录-CAS介绍
热门文章
- FFmpeg3.3.2+SDL2实现流媒体音频播放
- 用开放和流动反抗熵增,生态建设终极哲学——保险生态建设
- Lagrange对偶函数
- 微信原生小程序导入项目报错:[ app.json 文件内容错误] app.json: app.json 未找到
- Centos7的下载安装以及之后的基本操作【学习记录】
- light动名词_初中英语语法学习:动名词专项训练
- 光模块应用在交换机光纤收发器和路由器上互联方案
- fragment里面嵌套另一个fragment
- UG\NX二次开发 开发好几年,还只会用ufusr?其他用户入口函数介绍
- ERROR: torch-1.4.0+cpu-cp38-cp38m-win_amd64.whl is not a supported wheel on this platform.