irpas技术客

iOS制作framework_丁乾坤_ios 制作framework

网络 5841

ios自定义.framework .framework可以制作为静态库和动态库,此文章是制作静态库。系统的.framework都是动态库,自己制作的.framework都是静态库。

如何制作.framework如下:

1.用xcode创建一个framework工程,如下图

2.编写自己的工具类。如下图

3.设置Build Active Architecture Only 值 为NO。如下图(适配所有版本的模拟器和真机)

4.设置Mach-O Type值为Static Library(静态库)。如下图

5.将你需要别人引用的头文件设置public。默认在project(不可见,私有)。

6.引入头文件,有几个public 就引入几个public文件

?

7.创建Target。File->New->Target->Other->Aggregate。如下图

?

8.添加脚本。如下图

9.下面的脚本代码复制到新建的 Run Script. 如下图

#!/bin/sh #要build的target名 TARGET_NAME=${PROJECT_NAME} if [[ $1 ]] then TARGET_NAME=$1 fi UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Products" #创建输出目录,并删除之前的framework文件 mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}" rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework" #分别编译模拟器和真机的Framework xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build #拷贝framework到univer目录 cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}" #合并framework,输出最终的framework到build目录 lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}" #删除编译之后生成的无关的配置文件 dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/" for file in ls $dir_path do if [[ ${file} =~ ".xcconfig" ]] then rm -f "${dir_path}/${file}" fi done #判断build文件夹是否存在,存在则删除 if [ -d "${SRCROOT}/build" ] then rm -rf "${SRCROOT}/build" fi rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos" #打开合并后的文件夹 open "${UNIVERSAL_OUTPUT_FOLDER}"

?

?10.切换Scheme,CusFrameWork 设置Excluded Architectures下的?Any ios Simulator SDK 值为 arm64。(模拟器生成的.framework, 不需要arm64架构)。如下图 切记taget不要看错了。

?11.Scheme:CusFrameWork,?设置编译模式 release。如下图

12.设置.framework的最低版本,如下图

?

13.Schem: CusFrameWork. 选择真机,command+b 生成真机.framework。如下图

14.?Schem: CusFrameWork. 选择模拟器,command+b 生成真机.framework。如下图

?

13.切换Schem:Aggregate, 选择 any ios device,?command+B 编译运行脚本,脚本会自动打开文件夹?如下图

?

14.测试引入.framework. 新建一个项目TestCusFrameWork. 将13步骤中的CusFrameWork.framework文件夹?放到此项目中的根目录中。然后引入。如下图

?15.在TestCusFrameWork使用自己制作的SDK 并运行,成功打印。如下图

完结 OK?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #iOS #制作framework #制作SDK