升级到Xcode4.5之后,新增了iPhone5的armv7s支持,但是去除了armv6的支持,也就是说用XCode4.5无论如何配置项目都是无法编译出能在iPhone3G、iTouch2上面运行的程序或者库文件的,虽然说千寻影视已经不在打算支持这些古老的机型,而TCClick作为一个开源项目,还是需要提供支持的,下面就对TCClick项目中编译打包时所使用的方法进行介绍。
在TCClick项目代码根目录下,有一个名为lipo的脚本文件,该脚本文件就是用来执行编译打包的,执行这个脚本之后就可以在release目录下生成包含了armv6, armv7, armv7s以及i386四种CPU架构的库文件
york:tcclick-ios$ file release/libtcclick.a release/libtcclick.a: Mach-O universal binary with 4 architectures release/libtcclick.a (for architecture armv6): current ar archive random library release/libtcclick.a (for architecture armv7): current ar archive random library release/libtcclick.a (for architecture cputype (12) cpusubtype (11)): current ar archive random library release/libtcclick.a (for architecture i386): current ar archive random library
lipo脚本文件的代码如下
#!/bin/sh lipo=/usr/bin/lipo xcodebuild=/usr/bin/xcodebuild # 这个设置需要调整到你所放置的低版本XCode的地方 xcodebuild_armv6=/Applications/Xcode4.3.3/Xcode.app/Contents/Developer/usr/bin/xcodebuild project_lib_iphoneos=./build/Release-iphoneos/libtcclick.a project_lib_iphoneos_armv6=./build/Release-iphoneos-armv6/libtcclick.a project_lib_iphonesimulator=./build/Release-iphonesimulator/libtcclick.a target_lib=./release/libtcclick.a # 删除之前的残留文件,进行重新编译构建 rm -rf ./build/* # 编译armv6版本,然后把编译出来的内容移动到临时目录下面 $xcodebuild_armv6 -configuration=Release -arch armv6 mv ./build/Release-iphoneos ./build/Release-iphoneos-armv6 # 编译armv7、armv7s以及simulator的版本 $xcodebuild -configuration=Release $xcodebuild -configuration=Release -sdk iphonesimulator # 合并之前所编译出来的所有.a文件 $lipo -create "$project_lib_iphoneos_armv6" "$project_lib_iphoneos" "$project_lib_iphonesimulator" -output "$target_lib" file "$target_lib" cp ./build/*.h ./release
首先,因为XCode4.5已经去除了armv6的编译器,所以要编译armv6的版本是一定要在机器上安装更之前的XCode,我是在我的机器上的/Applications/Xcode4.3.3目录下安装了4.3.3的版本。除此之外,我还在TCClick项目的build目录变更到了项目所在目录,要不然我们就比较难找到编译好之后那些的.a文件,配置方法如图
你好 请问你的这种做法支持编译出ipa 发布吗?
支持的,原理大体一致,只是具体方法有些差异
怎么做呀 兄弟
一时也说不清楚,我空的时候再单独另起一篇博文详细介绍方法步骤吧
mark下,在查这方面资料