Github添加CocoaPods公开库
一、上传写好的库到github
1.在github上创建一个仓库
2.将仓库拉倒本地
复制仓库地址
将刚才复制的地址粘贴到这里
3.上传项目到github
将写好的库放在上一步的目标路径文件夹里。 可以看到sourceTree里新增的文件,将为暂存文件放到已暂存。
点下面提交信息的输入框,勾选下面立即推送,可以同时提交到本地及远程仓库
二、上传到cocoapods
1.注册cocoapods
pod trunk register 邮箱地址 ‘用户名’ --description='描述信息' 执行成功后打开你的邮箱验证即可。 pod trunk me 命令检查是否注册成功
2.制作podspec文件
方法一:cd 你的仓库所在目录 ---> pod spec create xxx(xxx是你的sdk名)。然后vi xxx.podspec 进入文件中进行配置。(方法一比较麻烦,不推荐)
方法二:拷贝别人的podspec,然后修改一下就可以。
下面来看看podspec里的内容及含义:
Pod::Spec.new do |s| s.name = 'LFPickerView' s.version = '1.0' s.license = { :type => "MIT", :file => "LICENSE" } s.summary = '将PickerView,DatePicker封装得更加简单易用,并可搭配UITextField使用' s.homepage = 'https://github.com/zhanglinfeng/LFPickerView' s.authors = { '张林峰' => '1051034428@qq.com' } s.source = { :git => 'https://github.com/zhanglinfeng/LFPickerView.git', :tag => s.version.to_s } s.requires_arc = true s.ios.deployment_target = '8.0' s.source_files = 'LFPickerView/LFPickerView/*.{h,m}'
s.dependency "Masonry"
end
s.name 你的sdk名字
s.homepage 你仓库的主页地址
s.source 仓库地址(注意跟主页地址不一样)及tag
s.ios.deployment_target 最低支持iOS 8.0
s.dependency "Masonry 依赖第三方库
s.source_files 供别人使用的文件(要根据你的文件路径设置,别搞错了,如下图)
然后把这个文件也提交到github。
3.给项目打个tag
tag要跟上一步制作的podspec文件里的tag一致。
4.上传你的sdk到cocoapods
注意:如果你的cocoapods版本低于1.1.0一定要升级。(怎么升级,升级速度慢失败等,网上一堆教程这里不说了)
cd 到你仓库根目录
pod lib lint 命令,对打上的标签与podspec标记的标签进行比验证
pod trunk push 命令,真正执行分支的推送操作
成功截图如下
然后等几个小时到2天,差不多就可以搜到自己的库了。
pod search 你的sdk名
如果好几天了还搜不到,对于有些类库确实是在Cocoapods中所不存在的,为了确定我们搜索的库是不是真的在Cocoapods的Repos中存在,我们可以到https://cocoapods.org/中进行搜索。如果你的库在Cocoapods里,但pod search 你的sdk名 命令还是搜不到。则执行下面操作:
终端输入rm ~/Library/Caches/CocoaPods/search_index.json
再pod search
。
5.一些使用技巧
a.使用指定tag
三、解决一些坑
1.- ERROR | [iOS] file patterns: The `source_files` pattern did not match any file.
解决办法:检查你.podspec文件中s.source_files路径有没有填错
2.did not pass validation ,due to 1 wanrings (but you can use --allow-warnings to ignore them)
解决办法:在命令后面加--allow-warnings
3.
4.- ERROR | xcodebuild: /Users/zhanglinfeng/Library/Developer/Xcode/DerivedData/App-culgapkleglkstaqypgjlqqpywqh/Build/Products/Release-iphonesimulator/LFKit/LFKit.framework/Headers/LFEncryptDecryptUtil.h:10:9: error: include of non-modular header inside framework module 'LFKit.LFEncryptDecryptUtil': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator11.0.sdk/usr/include/CommonCrypto/CommonCryptor.h' [-Werror,-Wnon-modular-include-in-framework-module]
解决办法:#import <CommonCrypto/CommonCryptor.h>从.h文件拿到.m文件。
======================
四、注册CocoaPods账号
CameraDemo git:(master) pod trunk register xxxxxx@qq.com '用户名' [!] Please verify the session by clicking the link in the verification email that has been sent to xxxxxx@qq.com
打开邮件中的链接, 这样就成功注册了Cocoapods账号。
检查是否创建成功的命令如下:
➜ CameraDemo git:(master) pod trunk me - Name: 用户名 - Email: xxxxxx@qq.com - Since: March 24th, 08:07 - Pods: None - Sessions: - March 24th, 08:07 - July 30th, 08:08. IP: 113.92.152.160 ➜ CameraDemo git:(master)
五、上传代码到CocoaPods
首先检测文件格式的有效性:
➜ CameraDemo git:(master) ✗ pod spec lint -> lottie-ios-OC (0.0.1) - NOTE | xcodebuild: note: Using new build system - NOTE | [iOS] xcodebuild: note: Planning build - NOTE | [iOS] xcodebuild: note: Constructing build description - NOTE | [iOS] xcodebuild: warning: Skipping code signing because the target does not have an Info.plist file. (in target 'App') Analyzed 1 podspec. lottie-ios-OC.podspec passed validation. ➜ CameraDemo git:(master) ✗
警告可以使用--allow-warnings
忽略.
出现passed validation
就说明通过验证了。然后执行:
pod trunk push lottie-ios-OC.podspec --allow-warnings
或
pod trunk push
成功的结果如下:
好像这个地方需要等待很长时间~~~
六、检查上传是否成功
pod search lottie-ios-OC
第一次搜索失败:
[!] Unable to find a pod with name, author, summary, or description matching `lottie-ios-OC`
如果搜索不到,建议删除本地的CocoaPods的搜索目录,执行以下命令:
➜ rm ~/Library/Caches/CocoaPods/search_index.json