iOS生成Frameworks

1、可以通过在xcode的target添加Aggregate的方式
2、直接生成shell脚本的方式

用Aggregate的方式,可以使用一些全局环境变量,比如:
SRCROOT:项目的路径


截屏2021-06-08 上午11.10.47.png

BUILD_DIR:Xcode编译生成库的路径


截屏2021-06-08 上午11.10.29.png

但通过shell脚本的方式,是不能使用上面那些全局变量的。可以使用:
WORKSPACE=$(pwd)
定位到当前shell所在的目录。

因此我写了这样一个通过版本:

set -e
FMK_NAME="mytestFrame"

WORKSPACE=$(pwd)

echo "hello-->$WORKSPACE"

INSTALL_DIR=${WORKSPACE}/Products/${FMK_NAME}.framework
DEVICE_DIR=${WORKSPACE}/build/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WORKSPACE}/build/Release-iphonesimulator/${FMK_NAME}.framework

xcodebuild clean build
xcodebuild -target "${FMK_NAME}" -configuration Release -arch arm64 -arch armv7 only_active_arch=no defines_module=yes -sdk "iphoneos"
xcodebuild -target "${FMK_NAME}" -configuration Release -arch x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk "iphonesimulator"


if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
rm -rf "${INSTALL_DIR}/${FMK_NAME}"

lipo -create -output "${INSTALL_DIR}/${FMK_NAME}" "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}"

rm -rf "${WORKSPACE}/build"

遗留问题:
使用这个xcodebuild编译,在Aggregate方式中,有时候会默认就生成到了Xcode的build路径,而不是在当前目录下生成编译后的库。我后面调试过程中,又都在当前目录下生成编译后的库的,暂未知道原因。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容