先上干货
创建远端私有库
去gitlab创建远端私有库,这个过程不赘述,如果后面需要创建例子工程,这里不需要创建Readme等文件。
添加远程仓库到本地
pod repo add xxx(远端库的名称) xxxx(远端库的地址) <br>
复制代码
添加完成后在/Users/gin/.cocoapods/repos下面可以找到刚添加的库
创建本地仓库
pod lib create xxx(本地项目名称)
复制代码
会从cocoapods下载一份例子代码下来,下面有几个步骤需要答题:
iOS(开发平台)/Objc(代码语言)/Yes(是否创建demo工程)/None(是否添加测试框架)/No(是否添加基于视图的测试)/项目的前缀
创建完成会自动打开项目,在项目目录下会出现demo工程的代码
替换源码文件
在demo项目里xxx(项目名称)的文件下面有Classes文件夹,用我们想要打包的源码替换掉里面的ReplaceMe文件
编辑xxx.podspec文件
s.name 项目名称
s.version 项目版本号
s.source 其中git后面的地址为远程仓库的地址
s.source_files 为源码匹配规则 可以写为TestModule/Classes/**/*.{h,m}这样只陪位.h,.m文件,匹配规则根据需要进行改变
s.dependency 为该模块依赖的其他第三方库
如果依赖多个库,要按如下方式添加
s.dependency 'AFNetworking'
s.dependency 'SDWebImage'
多个库必须换行添加,不能以逗号分隔
s.vendored_libraries 依赖第三方静态库
如:s.vendored_libraries='xxxx.a','nnnn.a'
复制代码
添加Pods仓库的源地址(重要!)
在demo项目的Podfile顶部添加
source 'xxxx(第一步的远程仓库地址)'
source 'https://github.com/Cocoapods/Specs.git' (Cocoapods引擎库)
#CDN的truck,source修改为source 'https://cdn.cocoapods.org/'
复制代码
Pofile里的支持版本需要与podspec里的支持版本一样
pod install
在demo项目下的Example文件夹下面执行pod install,会把Classes里的代码还有podspec复制到Pods下面,可以在测试工程里调用Pods里的类库,编译通过之在终端回到git的目录下
将本地代码push到远程
git remote add origin xxx(第一步远程仓库的链接)
git add .
git commit -m 'xxx'
git push origin master
git tag -a '0.0.1'(此处的版本号需要与podspec里的一致) -m 'xxx(打tag的说明)'
git push --tags
复制代码
pod lib lint 检查本地库
pod lib lint
如果想要忽略警告错误需要在后面添加 --allow-warnings
pod lib lint --allow-warnings
如果创建的项目依赖了其他第三方库需要添加 --use-libraries
pod lib lint --allow-warnings --use-libraries
如果依赖的第三方库也是私有库 需要指定--source
pod lib lint --allow-warnigns --use-libraries --source=git@172.16.21.253:platform_ios/PodRepo.git,https://github.com/CocoaPods/Specs.git
复制代码
pod spec lint 检查远程库
pod spec lint
如果忽略警告,添加--allow-warnings
pod spec lint --allow-warnings
如果引用其他第三方库 添加 --use-libraries
pod spec lint --allow-warnings --use-libraries
如果引用第三方库是私有的,需要添加 --source
pod spec lint --allow-warnings --use-libraries --source=git@172.16.21.253:platform_ios/PodRepo.git,https://github.com/CocoaPods/Specs.git
复制代码
pod repo push
远程仓库验证成功,接下来需要将xxx.podspec文件提交到Cocoapods的私有库中
pod repo push XXX(仓库名称) (本地项目的名称).podspec --allow-warnings
复制代码
发布完成使用
发布完成表示制作Cococapods私有库成功,如果其他项目需要依赖该模块,通过pod install方式就可以引用该模块,引用该模块的说话,需要在podfile上方添加pods仓库的源地址
source 'xxxx(第一步的远程仓库地址)'
source 'https://github.com/Cocoapods/Specs.git' (Cocoapods引擎库)
# CDN的truck,source修改为source 'https://cdn.cocoapods.org/'
复制代码
即可引用成功
遇到的问题
Could not find remote branch xxx to clone.
tag的版本号与podspec不一致,或者远端的不一致
The repo … at … is not clean
本地的私有库仓库不干净,需要清理本地缓存。将本地repo中的该仓库删除,重新添加,然后再执行验证,push就可以了.
~/.cocoapods/repo #打开本地的总仓库,找到你的那个私有仓库,将整个文件夹删掉,清空废纸篓
pod repo add 私有库仓库名 私有仓库远程地址
pod lib lint ...
pod repo push ...
复制代码
私有库更新不成功的问题
私有库发版成功后,需要在私有库工程中Example文件夹下 pod update,更新下私有库代码,接着再在需要引用该私有库的项目工程里pod install下,然后就可以看到私有库确实更新了,如果还没更新,可以将 Podfile 中“pod xxx”注释后 pod install 再取消注释后再 pod install,这样就可以实现更新了!
库的更新其实也就是功能文件或资源的更新。代码的更新必须要在“库名/classes”文件夹中进行!不要用Xcode在项目工程中的Pods/Development Pods/库名下面直接更新代码,这样做是无效的,因为这里只是库更新成功后,pod update后从本地pods仓库中拉取到的代码,这里不要进行写的操作,不然会导致库的异常,导致下一次更新后pod lib lint的失败!
如果是更新了代码部分,则需要先将代码push后再pod repo push。
发版成功后,需要pod repo update ops-xgn-ios-xgn,然后再在项目中引用。
An unexpected version directory ‘Assets’ was encountered for the /Users/yanyan/.cocoapods/repos/** Pod in the xxx repository.
可以进入指定文件夹repos把xxx删除即可,不行的话把demo项目里的xxx删除,重新发布就可以了。
原因是source ‘xxx(仓库地址)’意味着它希望它是一个规范仓库,但是您似乎正在尝试将规范仓库和该仓库中保存代码的仓库组合在一起,这是不受支持的。相反,您应该删除自定义source行,然后执行类似的操作pod ‘xxx’, :git => ‘xxx(仓库地址)’。
git remote: You do not have permission push to this repository
没有在Podfile文件里添加私有库地址 source ‘xxx’
github和gitlab
github打开比较慢,有时候打开打不开的,我使用的是gitlab。