iOS 打包framework

以JPush为例:

1. 创建framework工程

屏幕快照 2018-01-24 下午6.23.18.png

2.拖入资源,暴露header文件,添加依赖库

屏幕快照 2018-01-24 下午6.23.41.png
1.png

2.工程配置

2.1设置CPU架构类型

2.png

2.2设置最低版本支持

3.png

2.3.1设置打包类型为静态库

6.png

2.3.2设置打包类型为静态库

5.png

3.添加脚本

3.1点击工程目录 左下边的➕按钮即可

7.png

3.2添加依赖库

8.png

3.3点击➕添加脚本资源,脚本内容放入"Run Script"中即可

9.png

// 最后贴上脚本

#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/${PROJECT_NAME}/"
#创建输出目录,并删除之前的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}"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 制作 .framework 静态库的步骤: 4、把 Podfile 中所有库注释掉然后 pod install,然...
    卡丁车手阅读 2,513评论 0 1
  • 最近,稍微看了一下iOS的打包framework,发现网上的教程都是比较老的,所以整合了一下,使用了xcode8....
    乾坤醉心尘阅读 1,086评论 0 0
  • 一、概念了解1.什么是库?库是共享程序代码的方式,一般分为静态库和动态库。 2.静态库和动态库的区别静态库:链接时...
    空白_girl阅读 662评论 2 2
  • 我们在iOS开发中经常会导入一些Framework,那么今天我们就自己动手打包一个Framework 首先我们来新...
    zdl阅读 397评论 0 0
  • 清风几许,人声三两。 窗明几净,一心清欢。
    叶之声阅读 289评论 0 1