博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
旧工程适配iOS6和iPhone5续之第三…
阅读量:4071 次
发布时间:2019-05-25

本文共 1651 字,大约阅读时间需要 5 分钟。

转自:http://blog.cnrainbird.com/index.php/2012/09/25/jiu_gong_cheng_shi_pei_ios6_he_iphone5_xu_zhi_di_san_fang_jing_tai_ku/

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

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-athgobfbdtwgftgcogpuwegp
awlj/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
 

转载地址:http://sseji.baihongyu.com/

你可能感兴趣的文章
QT打开项目提示no valid settings file could be found
查看>>
android 代码实现圆角
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
drat中构造方法
查看>>
JavaScript的一些基础-数据类型
查看>>
coursesa课程 Python 3 programming 统计文件有多少单词
查看>>
coursesa课程 Python 3 programming course_2_assessment_7 多参数函数练习题
查看>>
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
Visual Studio 2010:C++0x新特性
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
Encoding Schemes
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
linux和windows内存布局验证
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>