一:Shell: 合并SDK真机&模拟器脚本
--------------------- 自己写的shell脚本 -------------------------------
参考链接:https://www.jianshu.com/p/6e0dbb01bb61
注意:target_name: 指的就是你的SDK target名字.
echo '****************Build Start*************'
if [ "${ACTION}" = "build" ]
then
# ------ target 名称 ------
target_name=${TARGET_NAME}
echo '*****当前Target='$target_name'*****'
# ------ build mode: release 名称 ------
build_mode="Release"
# ------ Swift 动态库lipo合并的目标路径 和 最终合并后的路径 ------
# release + 模拟器 模式下 target 所在路径
target_release_iphonessimulator_dir=${SYMROOT}/${build_mode}-iphonesimulator/${target_name}.framework/${target_name}
echo '*****release模拟器target所在路径='$target_release_iphonessimulator_dir''
# release + 真机 模式下 target 所在路径
target_release_iphones_dir=${SYMROOT}/${build_mode}-iphoneos/${target_name}.framework/${target_name}
echo '*****release真机target所在路径='$target_release_iphones_dir''
# merge(真机 + 模拟器 framework) 文件存放在工程路径下
merge_release_dir=${SRCROOT}/Products/${build_mode}/${target_name}.framework
echo '***** 合并真机和模拟器最新的路径='$merge_release_dir''
# release + 合并(真机 + 模拟器)target 所在路径
merge_target_dir=${merge_release_dir}/${target_name}
# ------ 删除合并后的路径、重新创建该目录 ------
if [ -d "${merge_release_dir}" ]
then
rm -rf "${merge_release_dir}"
fi
mkdir -p "${merge_release_dir}"
# ------ Swift 动态库 target_name.framework 源路径 ------
#真机源文件路径
iphones_dir=${SYMROOT}/${build_mode}-iphoneos/${target_name}.framework
#模拟器源文件路径
iphonesimulator_dir=${SYMROOT}/${build_mode}-iphonesimulator/${target_name}.framework
#拷贝文件 ${iphones_dir}/目录下的文件 拷贝到${INSTALL_DIR}/目录下
cp -R "${iphones_dir}/" "${merge_release_dir}/"
#swift库特有文件 Modules/BMWShareSDK.swiftmodule 进行合并
iphones_swiftmodule_DIR=${iphones_dir}/Modules/${target_name}.swiftmodule
iphonesimulator_swiftmodule_DIR=${iphonesimulator_dir}/Modules/${target_name}.swiftmodule
merge_swiftmodule_DIR=${merge_release_dir}/Modules/${target_name}.swiftmodule
#合并swift库特有文件 Modules/BMWShareSDK.swiftmodule
if [ -d "${iphonesimulator_swiftmodule_DIR}" ]
then
if [ -d "${iphonesimulator_swiftmodule_DIR}" ]
then
cp -R "${iphonesimulator_swiftmodule_DIR}/" "${merge_swiftmodule_DIR}/"
fi
fi
# 合并 .framework 文件
lipo -create ${target_release_iphonessimulator_dir} ${target_release_iphones_dir} -output ${merge_target_dir}
open "${SRCROOT}/Products/${build_mode}"
fi
--------------------- end -------------------------------
1: https://www.jianshu.com/p/5650e1e851f0
------------------------- 参考链接 ---------------------------
echo '****************Build Start*************'
#脚本运行当前目录
CUR_DIR=$(cd "$(dirname "$0")"; pwd)
echo '*****当前目录----'$CUR_DIR'*****'
#定义库的名字 ${PROJECT_NAME} "TestFramework"
MY_LIB_NAME="BMWShareSDK"
#编译对象 target的名字 一般与工程名字一致
MY_BUILD_TARGET_NAME="BMWShareSDK"
#目标目录
TARGET_DIR=${SRCROOT} #作为Xcode-Aggregate运行打开
#TARGET_DIR=${CUR_DIR} #作为sh文件运行打开
#定义编译目录 当前工程的目录下
WRK_DIR=build
#编译模式 ${CONFIGURATION} Release Debug
MY_BUILD_MODE="Release"
#源文件
DEVICE_DIR=${WRK_DIR}/${MY_BUILD_MODE}-iphoneos/${MY_LIB_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/${MY_BUILD_MODE}-iphonesimulator/${MY_LIB_NAME}.framework
#swift库特有文件 AEXML.framework/Modules/AEXML.swiftmodule
MODULES_DEVICE_DIR=${DEVICE_DIR}/Modules/${MY_LIB_NAME}.swiftmodule
MODULES_SIMULATOR_DIR=${SIMULATOR_DIR}/Modules/${MY_LIB_NAME}.swiftmodule
# 目标文件
INSTALL_DIR=${TARGET_DIR}/Products/${MY_LIB_NAME}.framework
MODULES_INSTALL_DIR=${TARGET_DIR}/Products/${MY_LIB_NAME}.framework/Modules/${MY_LIB_NAME}.swiftmodule
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
xcodebuild -configuration "${MY_BUILD_MODE}" -target "${MY_BUILD_TARGET_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "${MY_BUILD_MODE}" -target "${MY_BUILD_TARGET_NAME}" -sdk iphonesimulator clean build
echo '****************Build End*************'
echo '****************Compound Start*************'
#删除已经存在的文件
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
#递归重建文件
mkdir -p "${INSTALL_DIR}"
#拷贝文件 ${DEVICE_DIR}/目录下的文件 拷贝到${INSTALL_DIR}/目录下
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
#合并库架构 同时支持模拟器和真机
lipo -create "${DEVICE_DIR}/${MY_LIB_NAME}" "${SIMULATOR_DIR}/${MY_LIB_NAME}" -output "${INSTALL_DIR}/${MY_LIB_NAME}"
#合并swift库特有文件 AEXML.framework/Modules/AEXML.swiftmodule
if [ -d "${MODULES_SIMULATOR_DIR}" ]
then
if [ -d "${MODULES_SIMULATOR_DIR}" ]
then
cp -R "${MODULES_SIMULATOR_DIR}/" "${MODULES_INSTALL_DIR}/"
fi
fi
rm -r "${WRK_DIR}"
# 打开文件夹
open "${TARGET_DIR}/Products"
echo '****************Compound End*************'
------------------------- end ---------------------------
网友评论