美文网首页iOS相关技术实现
Xcode添加Shell脚本打包静态库和动态库

Xcode添加Shell脚本打包静态库和动态库

作者: iOS虞 | 来源:发表于2017-08-04 11:31 被阅读1135次

1.静态库

if [ "${ACTION}" = "build" ]

then

#要build的target名

target_Name=${PROJECT_NAME}

echo "target_Name=${target_Name}"

#build之后的文件夹路径

build_DIR=${SRCROOT}/build

echo "build_DIR=${build_DIR}"

#真机build生成的头文件的文件夹路径

DEVICE_DIR_INCLUDE=${build_DIR}/Release-iphoneos/include/${PROJECT_NAME}

echo "DEVICE_DIR_INCLUDE=${DEVICE_DIR_INCLUDE}"

#真机build生成的.a文件路径

DEVICE_DIR_A=${build_DIR}/Release-iphoneos/lib${PROJECT_NAME}.a

echo "DEVICE_DIR_A=${DEVICE_DIR_A}"

#模拟器build生成的.a文件路径

SIMULATOR_DIR_A=${build_DIR}/Release-iphonesimulator/lib${PROJECT_NAME}.a

echo "SIMULATOR_DIR_A=${SIMULATOR_DIR_A}"

#目标文件夹路径

INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}

echo "INSTALL_DIR=${INSTALL_DIR}"

#目标头文件文件夹路径

INSTALL_DIR_Headers=${SRCROOT}/Products/${PROJECT_NAME}/Headers

echo "INSTALL_DIR_Headers=${INSTALL_DIR_Headers}"

#目标.a路径

INSTALL_DIR_A=${SRCROOT}/Products/${PROJECT_NAME}/lib${PROJECT_NAME}.a

echo "INSTALL_DIR_A=${INSTALL_DIR_A}"

#判断build文件夹是否存在,存在则删除

if [ -d "${build_DIR}" ]

then

rm -rf "${build_DIR}"

fi

#判断目标文件夹是否存在,存在则删除该文件夹

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

#创建目标文件夹

mkdir -p "${INSTALL_DIR}"

#build之前clean一下

xcodebuild -target ${target_Name} clean

#模拟器build

xcodebuild -target ${target_Name} -configuration Release -sdk iphonesimulator

#真机build

xcodebuild -target ${target_Name} -configuration Release -sdk iphoneos

#复制头文件到目标文件夹

cp -R "${DEVICE_DIR_INCLUDE}" "${INSTALL_DIR_Headers}"

#合成模拟器和真机.a包

lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"

#打开目标文件夹

open "${INSTALL_DIR}"

fi


2.动态库

if [ "${ACTION}" = "build" ]

then

#要build的target名

target_Name=${PROJECT_NAME}

echo "target_Name=${target_Name}"

#build之后的文件夹路径

build_DIR=${SRCROOT}/build

echo "build_DIR=${build_DIR}"

#真机build生成的.framework文件路径

DEVICE_DIR_A=${build_DIR}/Release-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}

echo "DEVICE_DIR_A=${DEVICE_DIR_A}"

#模拟器build生成的.framework文件路径

SIMULATOR_DIR_A=${build_DIR}/Release-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}

echo "SIMULATOR_DIR_A=${SIMULATOR_DIR_A}"

#目标文件夹路径

INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}

echo "INSTALL_DIR=${INSTALL_DIR}"

#目标.framework路径

INSTALL_DIR_A=${SRCROOT}/Products/${PROJECT_NAME}/${PROJECT_NAME}

echo "INSTALL_DIR_A=${INSTALL_DIR_A}"

#判断build文件夹是否存在,存在则删除

if [ -d "${build_DIR}" ]

then

rm -rf "${build_DIR}"

fi

#判断目标文件夹是否存在,存在则删除该文件夹

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

#创建目标文件夹

mkdir -p "${INSTALL_DIR}"

#build之前clean一下

xcodebuild -target ${target_Name} clean

#模拟器build

xcodebuild -target ${target_Name} -configuration Release -sdk iphonesimulator

#真机build

xcodebuild -target ${target_Name} -configuration Release -sdk iphoneos

#合成模拟器和真机.framework包

lipo -create "${DEVICE_DIR_A}" "${SIMULATOR_DIR_A}" -output "${INSTALL_DIR_A}"

#打开目标文件夹

open "${INSTALL_DIR}"

fi

然后在把生成的执行文件手动替换掉 模拟器或真机的xxxx.framework/xxxx



如果你会写Shell脚本也可以完善一下直接用脚本拷贝到xxx.framework中

相关文章

网友评论

    本文标题:Xcode添加Shell脚本打包静态库和动态库

    本文链接:https://www.haomeiwen.com/subject/frqvlxtx.html