一、Framework的制作
1、选择TARGETS下的“+”号,然后选择 “Framework”
2、这里放需要公开的头文件
3、这里放需要封装的代码
4、选择对应的Scheme之后:
- 选中模拟器,编译程序
编译出来的framework只能在模拟器上运行。 - 选中测试机,编译程序
编译出来的framework只能在真机上运行。 - 在finder中找到framework文件
二、合并模拟器、真机模式下生成的Framework
1、创建一个Aggregate
2、选中刚刚创建的Aggregate,然后选中右侧的Build Phases,点击左下方加号,选择New Run Script Phase。
3、在Run Script增加这段合并脚本
#FMK_NAME是个变量,这个是声明生成的framework的名字
FMK_NAME="FTTestSDK"
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${FMK_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}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
#这个是合并完成后打开对应的文件夹,你就可以直接看到文件了
open "${SRCROOT}/Products"
fi
编译运行刚刚的FTSDKAGG,如果自动打开Finder说明编译成功了。
一、上传Framework至CocoaPods
1、创建一个Pod Lib模板
pod lib create PodTestLib
2、创建远端仓库,并将当前仓库关联远端仓库
在GitHub上新建一个空的仓库,然后本地仓库关联远端仓库
git remote add origin 你的git仓库地址(git@github.com:***.git)
3、根据提示选择对应的选项
4、新建Frameworks,将制作好的.framework文件放入
5、编辑.podspec文件,增加.framework文件路径
s.vendored_frameworks = "PodTestLib/Frameworks/FTTestSDK.framework"
6、编辑好.podspec文件中所有信息后,验证.podspec文件
pod lib lint #本地校验
pod spec lint #远程校验
7、验证通过后即可上传至Cocoapods的官方库
如果是第一次上传,可以注册一个Trunk 账号
pod trunk register 邮箱 '用户名' --verbose #--verbose为显示详细信息 pod trunk me #查看注册信息
如果已经拥有Trunk账号,那么可以直接上传Cocoapods库
pod trunk push
如果出现下图Congrats,就说明已经上传成功!
二、使用上传成功的Cocoapods库
1、用以下搜索命令即可搜索到你刚刚上传成功的Cocoapods库
pod search PodTestLib
2、但是有时候本地缓存并没有及时更新导致无法搜索到,可以通过移除本地索引解决,终端输入以下命令删除本地索引:
rm ~/Library/Caches/CocoaPods/search_index.json
rm ~/.cocoapods/repos/Spec_Lock
pod repo remove trunk # pod命令删除本地trunk
然后重新使用搜索命令,pod会自动根据最新的索引重新建立索引
pod search PodTestLib
三、删除已经发布成功的Cocoapods库
pod trunk delete PodTestLib 0.1.0
四、可能遇到的错误处理
1、'Pods-App' target has transitive dependencies that include static binaries错误
这个错误的意思是,你在做私有组件时使用了第三的静态库。加上--use-libraries
即可解决
pod lib lint --use-libraries
2、unknown: Encountered an unknown error ([!] /usr/bin/git clone ... 错误
这个错误比较常见,主要可能有以下几个原因:
- tag和.podspec文件内版本号没有对应上
- 依赖的第三方库因为太大,
git clone
命令失败 - 自己的库太大,
git clone
命令失败
这时候需要检查自己的tag是否已经推送到远端,以及自己制作的Framework是否过大