利用Cocoapods生成依赖第三方库的Framework

解决打包自己的framework的时候需要依赖第三方framework或文件的问题。

第一步

新建立一个本地Demo工程用于执行源码,创建demo工程目的是方便控制源码测试。
然后将framework的必要文件添加到Demo工程目录下。例如:

Classes/*.{h,m}
DemoProject/...

执行以下命令初始化cocoapods环境

pod init

然后编辑Podfile,把需要依赖的第三方库按规则编写,例如

pod 'GRKit', :path => '../GRKit'
pod 'AFNetworking', '~> 3.0'

再执行update,就可以跑起源码demo啦

pod update --verbose --no-repo-update

第二步

新建立一个target用于Framwork的生成。

  • 首先new一个target
  • 选取类型为Cocoa Touch Framework
  • 填写framework的名字,不要include unit tests,project选取为demo工程,embed in application选取为none
  • 创建完成

这个时候就可以去配置framework的文件了,先选取target为framework的target

  • build phases->compile sources加入需要编译的.m文件
  • build phases->headers加入需要暴露的头文件和需要编译的头文件。
  • build phases->Copy bundle resources加入需要的资源文件

然后配置build setting

  • Mach-O Type设置为Static Library(打包为静态库)

最后在Podfile里添加以下代码:

target 'XXXSDK' do
pod 'GRKit', :path => '../GRKit'
pod 'AFNetworking', '~> 3.0'
end

这个Podfile里的target要区别于demo的target,是分开使用的,这里需要编写framework依赖的库。
然后回到Podfile目录下执行

pod update --verbose --no-repo-update

最后一步

配置RunScript,控制其生成一个模拟器和真机都能使用的framework于当前目录下

  • Build phases->new Run Script
if [ "${ACTION}" == "build" ];

then

INSTALL_DIR=${SRCROOT}/Build/${TARGET_NAME}.framework

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework

if [ -d"${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

lipo -create "${DEVICE_DIR}/${TARGET_NAME}" "${SIMULATOR_DIR}/${TARGET_NAME}" -output "${INSTALL_DIR}/${TARGET_NAME}"

open "${SRCROOT}/Build"

fi

然后打开Project,选取framework的target,执行Build操作,便会输出一个Build/XXX.framework在项目的目录下了。最后可以直接把framework加到项目里使用,也可以通过Cocoapods引入到项目中使用,若使用Cocoapods的方式引入则需要再编写一个podspec文件。
可以参考我另外一篇博客: https://graydang.github.io/2018/06/15/cocoapods/

你可能感兴趣的:(利用Cocoapods生成依赖第三方库的Framework)