今天正好项目需要,实战一下,在此记录,根据官方文档https://guides.cocoapods.org/making/private-cocoapods.html操作
1. Create a Private Spec RepoSpec Repo
创建自己的私有的RepoSpec Repo
这个仓库是用来存储所有的组件,方便管理
这里用github 来做示例,打开https://github.com 然后创建一个名字为RepoSpec的仓库,获取该仓库的地址,这个是我的https://github.com/Chailang/RepoSpec.git
2. Add your Private Spec Repo to your CocoaPods installation
添加私有仓库到CocoaPods,命令行执行
pod repo add REPO_NAME SOURCE_URL
换成自己的仓库名以及地址,我的如下
pod repo add RepoSpec https://github.com/Chailang/RepoSpec.git
检查是否装成功:
open ~/.cocoapods/repos
可以看到自己建的仓库名称就ok了
至此 似有库的仓库就建成了
3.制作独立的单个组建,官网https://guides.cocoapods.org/making/using-pod-lib-create.html
- 在桌面建个myrepo文件夹 切到该文件夹下
cd /Users/super/Desktop/myrepo
pod lib create Mylib
图中选项可以根据自己项目需求来选择
cocoaspod 直接打开项目工程了
真实目录如下,可以添加自己的测试代码
创建远程仓库 名为Mylib
https://github.com/Chailang/Mylib.git
!创建时选择Public
!创建时不要选择添加一个README文件(添加README文件相当于执行了一次Initial commit,导致不能自动合并,需要强制push-
关联本地仓库 Mylib ,切到Mylib 根目录,执行如下命令
git add . git commit -m "frist commit" // 关联远程仓库 git remote add origin [Git URL] git push -u origin master //强推 git push -u origin master -f
-
创建Tag并push
!tag与version相同git tag -m "first release V0.0.1" 0.0.1 git push --tags
-
修改podspec,包括version、summary、homepage、source等信息
[图片上传![截屏2020-09-16 下午8.21.29.png]
-
本地和联网校验
区别pod spec lint 会联网校验仓库以及tagpod lib lint pod lib lint --allow-warnings pod spec lint pod spec lint --allow-warnings 推荐 使用 pod spec lint --allow-warnings
Mylib.podspec passed validation.
恭喜制作成功
- 在工程中更改podfile ,切到Example 目录,pod install
pod 'Mylib', :git => 'https://github.com/Chailang/Mylib.git'
platform :ios, '8.0'
target 'Mylib_Example' do
# pod 'Mylib', :path => '../'#本地链接
pod 'Mylib', :git => 'https://github.com/Chailang/Mylib.git'
end
4. 将建的Mylib.组件推到 第一步创建的RepoSpec 仓库
pod repo push [RepoSpec 名字或地址] [Mylib.podspec 的绝对路径] --allow-warnings
或者切到 Mylib.podspec 目录下 使用如下命令
pod repo push RepoSpec *podspec --allow-warnings
或者
pod repo push https://github.com/Chailang/RepoSpec.git *.podspec --verbose --allow-warnings
- pod 文件的使用更改如下
source 'https://github.com/Chailang/RepoSpec.git'
use_frameworks!
platform :ios, '8.0'
target 'Mylib_Example' do
pod 'Mylib'
target 'Mylib_Tests' do
inherit! :search_paths
end
end
source 指定了从RepoSpec 下去找Mylib 库