iOS在路上

iOS打包framework实践一 打包源码

2018-11-15  本文已影响56人  芝麻酱的简书

最近公司多个项目均需要用到同一模块,所以打算把此模块封装成静态库framework,并提交到公司gitlab上使用cocoapods管理,特记录实践过程。


首先把代码打包到framwork中:
新建工程,选择Cocoa Touch Framework


系统会默认创建一个以工程名字命名的头文件ZMJTestFramework.h,我们需要把暴露给外界使用的文件在ZMJTestFramework.himport

把代码拖入到新建的framework工程中(以ZMJView为例),现在我们需要把ZMJView暴露出来,所以在ZMJTestFramework.h头文件中按照系统提示的格式引入:


然后配置framwork,增加模拟器架构支持,来让打包出来的framework可以在模拟器上运行:

然后更改要打包的framework类型为静态库:
屏幕快照 2018-11-15 10.33.09.png

最后把上面👆 在头文件中importZMJView 添加到编译Headers的Public列表:


注:

然后更改编译版本为release版本:


现在一个简单的framework工程已经配置完成了,我们需要编译成framework文件来交付给别人使用。

编译方式1:

选择任一模拟器 Command + b编译:


然后选中工程文件列表Products中的.framework文件,右键show in finder,看到的就是最终生成的framework文件:

此时得到的framework只支持模拟器使用,如果想要在真机中使用,需要再选中真机然后Command + b编译,然后show in finder得到的framework就可以在真机中使用。
编译方式2:

在图中位置,生成script脚本:


然后添加如下脚本:
(脚本来源:https://www.jianshu.com/p/7f6a7e1b3235 十分感谢)
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
open "${DEVICE_DIR}"
open "${SRCROOT}/Products"
fi

真机和模拟器都Build一遍之后就会在工程目录下生成Products文件夹,文件夹中的framework就是我们需要的文件。

使用的时候,直接把生成的framework文件拖入到目标工程,然后import引入,即可使用:

2.打包


3.打包framework中


4.


5.


6.


7.

上一篇 下一篇

猜你喜欢

热点阅读