打包framework流程

本文介绍如何打包framework,及其注意事项

  1. 创建framework工程

image-20181204190516745

  1. 创建封装的文件,这时候,你想pod也好,怎么都好,然后设置build settings`

    image-20181204190458952

  2. 将开放的.h文件添加到 Target -> Build Phases -> Headers -> Public,要注意的是,开放的.h文件引用到的,都需要一样public。

    image-20181204190146335

  3. 设置你的deployment target,当然尽可能低,不过还是得结合你引用的pod

  4. 设置Architectures,为其添加上缺爱的型号

    img

  5. 设置Build Active Architecture Only,注意:这里可以先不要设置,因为设置完之后再跑程序(也就是你在此之前没有跑过程序,模拟器及真机),会报错

  6. 最好就是:

    1
    2
    3
    选中模拟器,编译程序
    选中测试机,编译程序
    在finder中找到framework文件

​ 然后执行第6步,然后重复第7步

image-20181204185502264

  1. 合并framework,由于单一的framework只能在对应的环境运行

image-20181204190857016

备注:可以使用lipo命令查看framework支持的型号环境

1
lipo -info #address#
  1. 以上都搞好之后

    image-20181204191040635

​ copy以下脚本,编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
  1. 编译后会弹出窗口,就是我们想要的framework

    image-20181204191259150

  2. 使用,直接拖到所需要的工程里面用