一、 本地新建一个索引库,并上传到远程仓库上
首先上git新建一个索引库
注意上图中红色箭头所指向的地方要勾选上,不然后面推送索引库有可能报以下错误
克隆到本地后执行 pod repo add[索引库名称][索引库地址],如下
pod repo add SCICategory0 https://github.com/XXXXX/SCICategory0.git
这时候 进入 ~/.cocoapods/repos 中就可以看到与远程仓库关联的本地索引库
这时候一个私有的索引库就创建完毕。
二、利用Cocoapods命令创建子模块,把业务代码搬到子项目上,把子项目上传到远程仓库取
在GitHub上新建一个子模块SCICategory0(注意:一定要同名,不然后面会很麻烦)
利用Cocoapods官方命令 pod lib create [模块名称] 创建子模块
pod lib create SCICategory0
这时候会问你几个问题:
1.What platformdoyou want touse?[iOS/macOS]//将模块应用到什么平台上
2.What languagedoyou want touse?[Swift/ObjC]// 模块的开发语言
3.Would you like to include a demo applicationwithyour library?[Yes/No]//是否生成demo应用,这里建议生成,因为你可以在这里进行测试
4.Which testing frameworks will youuse?[Specta/Kiwi/None]//是否集成测试框架
5.Would you like todo view based testing?[Yes/No]6.What is your class prefix?//开发前缀
执行完毕会自动打开一个Xcode工程,生成以下文件:
这时候把我们将自己的代码的类放到Classes文件夹,删掉其中的ReplaceMe.m文件,保证项目运行成功。
cd到Example工程里面pod install后,就可以进行开发测试了。
开发完成后,我们需要查看SFCommonKit.podspec这个文件了,文件内容如下
# # Be sure to run `pod lib lint SCICategory0.podspec' to ensure this is a # valid spec before submitting. # # Any lines starting with a # are optional, but their use is encouraged # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html # Pod::Spec.new do |s| s.name = 'SCICategory0' s.version = '0.1.0' s.summary = 'A short description of SCICategory0.' # This description is used to generate tags and improve search results. # * Think: What does it do? Why did you write it? What is the focus? # * Try to keep it short, snappy and to the point. # * Write the description between the DESC delimiters below. # * Finally, don't worry about the indent, CocoaPods strips it! s.description = <<-DESC TODO: Add long description of the pod here. DESC s.homepage = 'https://github.com/lujunjing/SCICategory0' # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'lujunjing' => '370634018@qq.com' } s.source = { :git => 'https://github.com/lujunjing/SCICategory0.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '8.0' s.source_files = 'SCICategory0/Classes/**/*' # s.resource_bundles = { # 'SCICategory0' => ['SCICategory0/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # s.dependency 'AFNetworking', '~> 2.3' end
其中,下面几个内容需要注意的
s.name 模块名称,将来pod install的名称是依据这个来的
s.version 模块版本,将来pod install的版本是依据这个来的
s.homepage 模块的主页
s.source 模块的远程仓库地址
s.frameworks 引用的系统库,如果用了静态库 ,验证的时候需要加--use-libraries
s.dependency 引用的第三方,如有多个,可以重复声明
三、检查完podspec确认无误后,cd到根目录文件,就可以就可以上传到远程仓库上了
1、git add .
2、git commit -m "初始化"
3、git remote add origin [远程仓库地址]
4、git push --set-upstream origin master
注明:
(1)、第4步通常不管用。
(2)、README.md文件是库说明文件,记录说明库功能、更新内容等。
(3)、github库上的README.md是新建库是必须勾选的,本地的README.md是新建项目是默认的(强行删除的话,工程运行崩溃),所以git push前需要git pull把远端仓库代码拉下来,解决冲突、合并文件,否则会报错。但是网上各种教程均无效。
(4)、目前只找到一种方法,git push -u origin master -f (因为 github 上的版本和本地版本会产生冲突,可以加上 -f 参数强制提交:)
这时候刷新github,发现库已经更新:
上传成功后需要加tag标志,注意一下这个tag标志需要与上面说到的s.version里面的版本号保持一致
5、git tag 0.1.0(版本号必须与.podspec中记录的保持一致)
6、git push --tags
四、发布到cocoapods 上进行托管
1、验证podspec文件,使用 pod spec lint 或 pod lib lint 验证podspec 文件 如果出现warn获告,则在命令行后加--allow-warnings来忽略所有警告即可, 如: pod spec lint --allow-warnings
pod lib lint SCICategory0.podspec --allow-warnings
等待一段时间,如果返回信息是 passed validation. 表示验证通过。如下:
2、发布 输入 pod trunk push --allow-warnings命令来发布到cocoapods上
(创建Pod账号 通过终端指令来操作: pod trunk registerxxx@live.cn'username' -verbose 可以使用 pod trunk me 来查看自己的账号信息,如果没有账号的话需要先注册一下—)
3、使用pod search 搜索自己的库 直接在终端输入 pod search XXX 如果搜不到可能是发布到pod远程库成功了,但是本地库没更新导致的,所以用了pod repo update 更新本地库 然后用 pod search XXX --simple 再次搜索 (注:--simple是只搜索库名字)
使用方法:
1、Podfile文件中pod 'SCICategory0'
2、pod install
3、如果出现以下报错,说明说本机的本地库太老了。。你要更新一下子:pod repo update,实际是本地 更新整个.cocoapods下的所有库
4、更新完后,再pod install。
搞定
网友评论