github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

时间:2021-11-17 20:55:16

一、上传写好的库到github(我这里使用SourceTree客户端)

1.在github上创建一个仓库

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

2.将仓库拉倒本地

复制仓库地址

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

将刚才复制的地址粘贴到这里

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

3.上传项目到github

将写好的库放在上一步的目标路径文件夹里。 可以看到sourceTree里新增的文件,将为暂存文件放到已暂存。

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

点下面提交信息的输入框,勾选下面立即推送,可以同时提交到本地及远程仓库

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

二、上传到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 + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

然后把这个文件也提交到github。

3.给项目打个tag

tag要跟上一步制作的podspec文件里的tag一致。

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

4.上传你的sdk到cocoapods

注意:如果你的cocoapods版本低于1.1.0一定要升级。(怎么升级,升级速度慢失败等,网上一堆教程这里不说了)

cd 到你仓库根目录

pod lib lint 命令,对打上的标签与podspec标记的标签进行比验证

pod trunk push 命令,真正执行分支的推送操作

成功截图如下

github + SourceTree管理自己的库并上传到cocoapods及各种坑的解决办法

然后等几个小时到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

pod 'AFNetworking', :git => 'https://github.com/gowalla/AFNetworking.git', :tag => '0.7.0'
b.使用指定某次提交,比如你不想频繁打tag,或者要立马使用不想等pod验证
pod 'LFKit/LFBadge', :git => 'https://github.com/zhanglinfeng/LFKit', :commit => '13b65eb'

三、解决一些坑

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.

- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
- NOTE | [iOS] xcodebuild: xcodebuild: error: 'App.xcworkspace' does not exist.
解决办法:更新你的Cocoapods版本

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文件。原因不明,反正我辛辛苦苦各种尝试,这样就解决了。