编译zbar生成.a文件
因为最近在做项目打包瘦身,优化打包体积。在项目打开
bitcode:YES的时候编译libzbar.a报错不支持bitcode,所以只能重新编译,在此过程中遇到一些问题,遂作记录。
1. clone 文件到本地
zbar github地址:github.com/mchehab/zba…
2. 创建build.sh文件
folder="Distribution"
project_name="libzbar"
lib_name="libzbar"
name_simulator=$lib_name"_simulator"
name_device=$lib_name"_device"
xcodebuild OTHER_CFLAGS="-fembed-bitcode" -target $project_name build
xcodebuild OTHER_CFLAGS="-fembed-bitcode" -sdk iphonesimulator -target $project_name build
rm -r build/Production-SDK
cp -r build/$folder-iphoneos build/Production-SDK
cp build/$folder-iphonesimulator/$lib_name.a build/Production-SDK/$name_simulator.a
mv build/Production-SDK/$lib_name.a build/Production-SDK/$name_device.a
cd build/Production-SDK/
lipo -create $name_simulator.a $name_device.a -output $lib_name.a
rm $name_device.a
rm $name_simulator.a
file $lib_name.a
open .
lib_name 是.a文件的名字。例如:libzbar.a;
project_name是target名字;
zbar会用Distribution-iphoneos 和 Distribution-iphonesimulator文件下生成的.a文件,合并生成支持模拟器和真机的.a文件。
把build.sh放到iPhone文件下
3. build setting设置
target 选择libzbar -> Build Settings

如果不设置以下设置
Excluded Architectures -> Distribution下添加Any iOS Simulator SDK:arm64
会出现
`fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: libzbar_simulator.a and libzbar_device.a have the same architectures (arm64) and can't be in the same fat output file
libzbar.a: cannot open libzbar.a' (No such file or directory)
原因:两个.a文件都包含arm64,无法合并。
4.编译成功
编译成功后会在Production-SDK文件夹。
查看.a信息
lipo -info libzbar.a