iOS打包framework静态库

版权声明:本文为原创文章,未经博主允许不得转载,有问题欢迎讨论。 https://blog.csdn.net/u014696025/article/details/79107083

iOS打包framework静态库

环境环境

  • Mac: 10.12.6
  • Xcode: 9.1

1. 创建项目

1.1 新建工程

1.2 添加文件


* 把写好的代码文件拖入到项目里
* 主头文件中导入需要暴露的头文件

1.3 设置Headers

Targets -> 项目名字 -> Build Phases -> Headers


* 添加需要的头文件,然后把需要暴露的头文件拖入到 Public 区域

1.4 设置 Mach-O Type

2. 编译项目,产生 .framework文件

2.1 校验生成的静态库支持的框架类型

  • 命令:lipo -info EncryptLib
  • 输出结果:
    • 真机状态编译:Architectures in the fat file: EncryptLib are: armv7 arm64
    • 模拟器状态编译:Non-fat file: EncryptLib.framework/EncryptLib is architecture: x86_64

问题: 怎么才能编译一次,同时支持真机和模拟器架构呢?

答案:添加一个跨平台的targets

3. 跨平台

3.1 添加 Target

3.2 配置脚本

FMK_NAME=${PROJECT_NAME}
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"

3.3 现在新建的Target,编译

3.4 校验生成的静态库支持的框架类型

  • 不管编译的时候选择的是真机还是模拟器,都兼容。
  • Architectures in the fat file: EncryptLib are: i386 x86_64 armv7 arm64

猜你喜欢

转载自blog.csdn.net/u014696025/article/details/79107083
今日推荐