一.创建一个工程xxx
- 把需要开源的文件放到这个工程对应文件夹里,保证运行成功。(文件夹也会显示到开源库的目录结构),比如
Category
文件夹,对应NSURLSession
WX20210903-143040.png
WX20210903-143134.png
二.github创建一个仓库,并把工程xxx
与这个仓库绑定(github实在太慢,用coding创建仓库替代了)
- 上传代码到仓库后,记得打tag:
(cocoapods的版本记录就是这个tag)
git tag 1.0.0 git push --tags
- 码云coding仓库的创建与本地工程绑定
三. 安装CocoaPods
- 没有安装cocoapods,m1芯片安装cocoapods
- 更新cocoapods版本:
pod --version //查看版本 sudo gen install cocoapods pod setup //低于0.33,需要更新
四.配置.podspec文件
-
注册:
(已经注册的先忽略)
pod trunk me
-
创建.podspec:
pod spec create xxx //xxx为开源库的名称
-
编辑.podspec:
-
开源的一些编辑:
Pod::Spec.new do |spec| spec.name = "xxx" //开源库名 spec.version = "1.0.0" //开源版本号,对应仓库的tag spec.summary = "iOS开发组件化" // 简介 spec.description = <<-DESC 一些开发组件化 //描述 (DESC不能删掉) DESC spec.homepage = "https://e.coding.net/xxx.git" //开源库的仓库地址 # spec.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif"
-
开源协议的编辑:
(coding码云没有license,可以到github下载一个放到仓库)
spec.license = { :type => "MIT", :file => "LICENSE" }
-
作者信息的编辑:
#spec.author = { "tucici" => "00000@qq.com" } spec.author = "tucici" // 二选一
-
开源库发布的平台的编辑:
spec.platform = :iOS //这里设置只发布iOS平台 # spec.platform = :ios, "5.0" # When using multiple platforms # spec.ios.deployment_target = "5.0" # spec.osx.deployment_target = "10.7" # spec.watchos.deployment_target = "2.0" # spec.tvos.deployment_target = "9.0"
-
开源库的资源编辑:
spec.source = { :git => "#{spec.homepage}", :tag => "#{spec.version}" }
-
其他常见的写法:
spec.source = { :git => "https://github.com/xxx/xxx.git", :commit => "98emfox" } spec.source = { :git => "https://github.com/xxx/xxx.git", :tag => 1.0.0 } spec.source = { :git => "hhttps://github.com/xxx/xxx.git", :tag => spec.version }
-
commit => "98emfox"
表示pod版本与git
仓库指定的commit= 98emfox
绑定 -
tag => 1.0.0
表示pod版本与git
仓库指定的tag=1.0.0
绑定 -
tag => spec.version
表示pod版本与仓库的tag
保持一致。spec.version
就是.podspec
最开始编辑参数spec.version = "1.0.0"
-
-
-
开源库需要包含的源文件:
spec.source_files = "CCKit", "CCKit/Category/*.{h,m}" spec.exclude_files = "Classes/Exclude" # spec.public_header_files = "Classes/**/*.h" //需要包含的头文件
CCKit
文件夹是与.podspec
同一级,上面配置的结果是,开源库会包含CCKit/Category/里面所有的.h.m
文件 -
开源库依赖静态库/动态库的编辑:
spec.frameworks = "Foundation", "UIKit" //这里就只依赖官方库
-
依赖第三方开源库的编辑:
spec.dependency "AFNetworking", "~> 1.0.0"
-
大体上配置就这样,其实看.podspec的注释,可以大概明白每个配置是干嘛的
-
五.验证.podspec
pod spec lint xxx.podspec --verbose
-
验证成功提示:
xxx.podspec passed validation.
六.成功发布
-
发布:
pod trunk push xxx.podspec
-
成功:
Updating spec repo `trunk` -------------------------------------------------------------------- ------------ 🎉 Congrats 🚀 xxx (1.0.0) successfully published 📅 September 3rd, 04:29 🌎 https://cocoapods.org/pods/xxxx 👍 Tell your friends!
-
搜索发布的开源库xxx:
rm ~/Library/Caches/CocoaPods/search_index.json
过几分钟后,搜索,就能成功显示,有时候可能需要等更久
:pod search XXX
七.错误及解决:
-
Specs satisfying the `xxxx (~> 1.0.0)` dependency were found, but they required a higher minimum deployment target.
:
解决:三方依赖库xxxx
设置里支持最低的ios
版本,所以本开源库设置ios版本要高于xxxx
支持的ios
版本 -
Encountered an unknown error (/usr/bin/xcrun simctl list -j devices
:
解决: Xcode->Preferences->Locations->Command line tools,选择一个Xcode版本 -
[!] The spec did not pass validation, due to 3 warnings (but you can use `--allow-warnings` to ignore them).
:
解决:pod spec lint xxx.podspec --verbose --allow-warnings
网友评论