IOS 静态库打包流程简化详细介绍

2020-01-18 19:02:41王冬梅

最后是把两个库文件合在一起


# 静态库文件
LIB_NAME=lib${LIB_STATIC_NAME}.a

#合并模拟器文件和真机文件
lipo -create ${IPHONE_OS_DIR}/${LIB_NAME} ${IPHONE_SIMULATOR_DIR}/${LIB_NAME} -output ${TEMP_DIR}/${LIB_NAME}
lipo -info ${LIB_NAME}

这样就完成了基本的编译合并工作,但是对于一个很懒的程序员来说,这还不够,这样我还需要把头文件合.a文件分别拷贝出来,然后放到一个目录下面。那就继续写脚本,让脚本完成吧。


#拷贝头文件和.a文件到同一目录下
##建立SDK目录
pushd ${TEMP_DIR}
if [[ -d ${LIB_STATIC_NAME} ]]; then
rm -fR ${LIB_STATIC_NAME}
fi

mkdir -p ${LIB_STATIC_NAME}

##拷贝.a和头文件
cp -fR ${LIB_NAME} ${LIB_STATIC_NAME}
rm -fR ${LIB_NAME}

cp -f ${IPHONE_SIMULATOR_DIR}/include/${LIB_STATIC_NAME}/* ${LIB_STATIC_NAME}

虽然放到了同一个文件夹,可我给使用SDK的用户发放的时候总得使用压缩包。压缩也自动化算了。


#打包为zip文件
PACKAGE_DATE=`date '+%Y%m%d%H'`
GIT_VERSION=`git log --abbrev-commit|head -1|cut -d' ' -f 2`

SDK_ZIP_NAME=iOS_${LIB_STATIC_NAME}_${PACKAGE_DATE}_${GIT_VERSION}_${CONFIGURATION}.zip

zip -qr ${SDK_ZIP_NAME} ${LIB_STATIC_NAME}

当然,你也可以继续写脚本。。。把压缩包自动发送给需要的人。。

脚本完整代码


#!/bin/sh

# build_TestSDK_script.sh
# TestSDK
#
# Created by jianquan on 2016/11/16.
# Copyright © 2016年 JoySeeDog. All rights reserved.

PROJ=${PROJECT_NAME}.xcodeproj
LIB_STATIC_NAME=TestSDK #把项目名改为自己的即可使用
TEMP_DIR=~/XcodeTestTempBuild#打包出来的文件的目录,可以自己定义


IPHONE_OS_DIR=${TEMP_DIR}/${CONFIGURATION}-iphoneos
IPHONE_SIMULATOR_DIR=${TEMP_DIR}/${CONFIGURATION}-iphonesimulator

#创建真机库文件目录
if [[ ! -d ${IPHONE_OS_DIR} ]]; then
mkdir -p ${IPHONE_OS_DIR}
fi

#创建模拟器库文件目录
if [[ ! -d ${IPHONE_SIMULATOR_DIR} ]]; then
mkdir -p ${IPHONE_SIMULATOR_DIR}
fi


#编译真机库文件
xcodebuild -project ${PROJ} 
-scheme ${LIB_STATIC_NAME} 
-configuration ${CONFIGURATION} 
-sdk iphoneos 
clean 
build 
CONFIGURATION_BUILD_DIR=${IPHONE_OS_DIR}
# -archivePath ${IPHONE_OS_DIR}

#编译模拟器库文件
xcodebuild build -project ${PROJ} 
-scheme ${LIB_STATIC_NAME} 
-configuration ${CONFIGURATION} 
-sdk iphonesimulator 
clean 
build 
CONFIGURATION_BUILD_DIR=${IPHONE_SIMULATOR_DIR}
# -archivePath ${IPHONE_SIMULATOR_DIR}


# 静态库文件
LIB_NAME=lib${LIB_STATIC_NAME}.a

#合并模拟器文件和真机文件
lipo -create ${IPHONE_OS_DIR}/${LIB_NAME} ${IPHONE_SIMULATOR_DIR}/${LIB_NAME} -output ${TEMP_DIR}/${LIB_NAME}
lipo -info ${LIB_NAME}


#拷贝头文件和.a文件到同一目录下
##建立SDK目录
pushd ${TEMP_DIR}
if [[ -d ${LIB_STATIC_NAME} ]]; then
rm -fR ${LIB_STATIC_NAME}
fi

mkdir -p ${LIB_STATIC_NAME}

##拷贝.a和头文件
cp -fR ${LIB_NAME} ${LIB_STATIC_NAME}
rm -fR ${LIB_NAME}

cp -f ${IPHONE_SIMULATOR_DIR}/include/${LIB_STATIC_NAME}/* ${LIB_STATIC_NAME}


#打包为zip文件
PACKAGE_DATE=`date '+%Y%m%d%H'`
GIT_VERSION=`git log --abbrev-commit|head -1|cut -d' ' -f 2`

SDK_ZIP_NAME=iOS_${LIB_STATIC_NAME}_${PACKAGE_DATE}_${GIT_VERSION}_${CONFIGURATION}.zip

zip -qr ${SDK_ZIP_NAME} ${LIB_STATIC_NAME}