最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

iOS开发之Xcode中合并通用静态库脚本

iOS 天狐 16937浏览 0评论
创建静态库可能出于以下几个理由:
1.你想将一些你和你团队中的同事们经常使用的类打包并轻松的分享给周围其他人。
2.你想让一些通用代码处于自己的掌控之下,以便于修复和升级。
3.你想将库共享给其他人,但不想让他们看到你的源代码。
本教程假定你有了一个单独的静态库工程,或者项目中其中一个target是静态库
EF0ABE55-043A-45E6-A6B7-E5AE414101F9
假定工程名为test 静态库target名为 testLib
在Xcode菜单中选择File/New/Target,选择iOS/Other并点击Aggregate 命名为merge
在工程导航视图中选中test,然后选择刚刚建立的merge target。切换到Build Phases标签;
点击 "加号按钮",在弹出的菜单中选择New Run Script Phases
填入
# define static library target name
LIB_NAME="testLib"

# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
DEVICE_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos
SIMULATOR_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator

# Step 1. Build Device and Simulator versions
# insert such -arch i386 before BUILD_DIR assign arch
xcodebuild -target "${LIB_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target "${LIB_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

# Cleaning the oldest and make sure the output directory exists
if [ -d "${UNIVERSAL_OUTPUTFOLDER}" ]
then
rm -rf "${UNIVERSAL_OUTPUTFOLDER}"
fi
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 2. Create universal binary file using lipo
lipo -create "${DEVICE_DIR}/lib${LIB_NAME}.a" "${SIMULATOR_DIR}/lib${LIB_NAME}.a" -output "${UNIVERSAL_OUTPUTFOLDER}/lib${LIB_NAME}.a"

# Last touch. copy the header files. Just for convenience
cp -R "${DEVICE_DIR}/include" "${UNIVERSAL_OUTPUTFOLDER}/"
​
#open the universal dir
open "${UNIVERSAL_OUTPUTFOLDER}/"

#delete DEVICE and SIMULATOR build file
#rm -rf "${DEVICE_DIR}"
#rm -rf "${SIMULATOR_DIR}"

注意:其中LIB_NAME="testLib" 为对应要合并的静态库target名称

本脚本根据merge target的debug 或者 release 来决定打出的.a为debug 或者 release

run merge target 即可弹出合并后的静态库路径

转载请注明:天狐博客 » iOS开发之Xcode中合并通用静态库脚本

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址