CocoaPods发布闭源Framework

西门桃桃 2020-09-23 PM 3500℃ 0条

一、Framework的制作

1、选择TARGETS下的“+”号,然后选择 “Framework”

2020-09-23-16-53-25-image.png

2、这里放需要公开的头文件

2020-09-23-16-55-59-image.png

3、这里放需要封装的代码

2020-09-23-17-08-32-image.png

4、选择对应的Scheme之后:

  • 选中模拟器,编译程序
    编译出来的framework只能在模拟器上运行。
  • 选中测试机,编译程序
    编译出来的framework只能在真机上运行。
  • 在finder中找到framework文件

2020-09-23-17-11-56-image.png

2020-09-23-17-14-31-image.png

二、合并模拟器、真机模式下生成的Framework

1、创建一个Aggregate

2020-09-23-17-20-34-image.png

2、选中刚刚创建的Aggregate,然后选中右侧的Build Phases,点击左下方加号,选择New Run Script Phase。

2020-09-23-17-22-33-image.png

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说明编译成功了。

2020-09-23-17-29-04-image.png

一、上传Framework至CocoaPods

1、创建一个Pod Lib模板

pod lib create PodTestLib

2、创建远端仓库,并将当前仓库关联远端仓库

GitHub上新建一个空的仓库,然后本地仓库关联远端仓库

git remote add origin 你的git仓库地址(git@github.com:***.git)

3、根据提示选择对应的选项

2020-09-23-17-48-47-image.png

4、新建Frameworks,将制作好的.framework文件放入

2020-09-23-17-50-25-image.png

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,就说明已经上传成功!

2020-09-23-18-02-31-image.png

二、使用上传成功的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 ... 错误

2020-09-23-18-20-26-image.png

这个错误比较常见,主要可能有以下几个原因:

  • tag和.podspec文件内版本号没有对应上
  • 依赖的第三方库因为太大,git clone命令失败
  • 自己的库太大,git clone命令失败

这时候需要检查自己的tag是否已经推送到远端,以及自己制作的Framework是否过大

标签: CocoaPods, Framework

非特殊说明,本博所有文章均为博主原创。

评论啦~