编译zbar支持bitcode

346 阅读1分钟

编译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-iphoneosDistribution-iphonesimulator文件下生成的.a文件,合并生成支持模拟器和真机的.a文件。

把build.sh放到iPhone文件下

3. build setting设置

target 选择libzbar -> Build Settings

![image-20211022092942283](/Users/jia/Library/Application Support/typora-user-images/image-20211022092942283.png)

如果不设置以下设置

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