目录
前言
自己的工具库和框架以前都是直接在模块里面操作的,没有做成私有化或者cocoapods管理,有必要操作一番,就有了以下的笔记
1.git基本使用
2.cocoapods发布自己的库给银河系的大佬diss
3.pod本地私有库
Git基本操作
1.git init 初始化本地仓库
2.git add . 增加文件到暂缓区
3.git status 查看文件状态
4.git commit -m "xxx" 从暂缓区提交到本地仓库
5.git tag '0.0.1' 打标签
6.git tag 查看标签
7. git tag -d 0.0.1 然后 git push origin :0.0.1 删除标签
8.git remote add origin 仓库地址 管理远程仓库地址
9.git push -u origin master 推倒远程仓库,以后默认git push即可
10.git pull origin master 或者第一次用 git pull --rebase origin master 从远程仓库拉
1.github创建远程仓库如下
按照上面选择之后会默认创建仓库如下
2.本地Xcode创建一个新的工程
就放在桌面新建一个新的工程,然后cd到目录操作如下
以上步骤已经把change提交到暂缓区了
以上步骤push之前需要需要手动remote关联刚才创建的远程仓库。由于之前没有push过,而且仓库已经存在,也有相关的文件,所以需要先pull下来,不然会报错,而且要记得加上--rebase
最后push到仓库,然后打上tag即可
刷新远程仓库如下
这里下面的代码就是我们本地仓库推上来的,如果我们要制作库用pod install安装,就是release里面的代码了。
根据最上面的介绍,也可以自己删除tag标签,注意tag标签只是一个记录,上传标签只是上传了这条记录,并不是上传代码
git tag -d 0.0.1 然后 git push origin :0.0.1 删除标签
Cocoapods发布自己的框架
1.安装cocoapods
2.使用cocoapods
2.1.pod search 关键字, 搜素自己需要安装的库,这里的搜索是根据最近一次本地仓库更新的文件进行查找,如果没有找到指定版本或者库,可以执行 pod repo update来更新本地仓库,或者删除本地检索文件,重新从远程拉
rm ~/Library/Caches/CocoaPods/search_index.json
2.2.安装所需框架
执行pod init创建Podfile文件,一般都是工程一级目录下面
platform :ios, '9.0'
target 'test' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'AFNetworking'
target 'testTests' do
inherit! :search_paths
# Pods for testing
end
end
这里的use_frameworks目的是让库按那种形式,默认是静态库的方式打进包里面,打开的话就是framework动态链接的形式存在,
2.3:这里安装的AF
执行
pod install
安装完成,打开即可使用
pod install
和pod update
区别?pod install
第一次会根据Podfile文件安装,有了Podfile.lock文件后会根据.lock文件安装。pod update
是根据Podfile文件进行安装第三方框架。
团队开发中一般都是使用pod install,除非大家一起使用pod update升级本地库。
3.cocoapods发布自己的框架
上面的都是铺垫,基本上都会,下面介绍下如何发布自己写好工具到Cocoapods
1.根据上面git的使用创建第一个项目,并且关联到github,然后自己创建一个简单的类作为工具库发布用,MKJTool目录如下
2.podspec的创建
pod spec create MKJTool
用Xcode打开,这里用我这个简洁版本的即可,网上那些太乱了
Pod::Spec.new do |s|
s.name = 'MKJTool'
s.version = '0.0.2'
s.summary = 'MKJTool'
s.homepage = 'https://github.com/DeftMKJ/balabala'
s.license = 'MIT'
s.authors = {'Mikejing' => '714831204@qq.com'}
s.platform = :ios, '6.0'
s.source = {:git => 'https://github.com/DeftMKJ/balabala.git', :tag => s.version}
s.source_files = 'MKJTool/**/*.{h,m}'
s.requires_arc = true
end
这里介绍下我这几个的,网上介绍的太多太杂,用这一坨发布基本的足够了
s.name:
名称,pod search
搜索的关键词,注意这里一定要和.podspec的名称一样,否则报错s.version:
版本号,to_s:返回一个字符串 就是我们项目中刚才打的tags.author:
作者s.homepage:
项目主页地址s.summary:
项目简介s.source:
项目源码所在地址s.license:
许可证s.platform:
项目支持平台s.requires_arc:
是否支持ARCs.source_files:
需要包含的源文件 这里最好放在spec的同级目录,然后指定目录下所有h和m文件s.public_header_files:
需要包含的头文件s.ios.deployment_target:
支持的pod最低版本其他一些非必要字段
s.social_media_url:
社交网址s.resources:
资源文件s.dependency:
依赖库,不能依赖未发布的库
3.打上0.0.2tag提交
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git add .
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git commit -m "publish"
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git push -u origin master
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git tag '0.0.2'
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git tag
0.0.1
0.0.2
mikejingdeMacBook-Pro:BlogLibTest MKJ$ git push --tags
Enter passphrase for key '/Users/MKJ/.ssh/id_rsa':
Total 0 (delta 0), reused 0 (delta 0)
To github.com:DeftMKJ/balabala.git
* [new tag] 0.0.2 -> 0.0.2
4.注册Cocoapods发布权限
首先执行
pod trunk me
如果看自己的注册信息和框架,那么已经注册过了,没有的话就要执行
pod trunk register xxxx@xxx.com 'password' --verbose
之后这个邮箱会收到一个邮件,验证即可,虽有在执行pod trunk me查询即可
有权限之后看下我们编写的spec时候可以正常发布,一般情况下写错了就不能发布了,所以预先看下是否合格
pod spec lint MKJTool.podspec --verbose
之后会执行一坨东西,如果最后看到以下输出说明OK了,不然你就跟着error改就好
5.发布
pod trunk push MKJTool.podspec
6.测试自己的cocoapods
pod search MKJTool
这个时候一般是搜索不到的,因为发布到网上,本地没更新,我们可以如下操作删除本地json文件
mikejingdeMacBook-Pro:BlogLibTest MKJ$ rm ~/Library/Caches/CocoaPods/search_index.json
mikejingdeMacBook-Pro:BlogLibTest MKJ$ pod search MKJTool
几分钟左右就可以看到了
7.以上发布的主要命令
git tag "0.0.1"
git push --tags
pod trunk register example@example.com 'password' --verbose
pod trunk me
pod spec create MKJTool //编辑 MKJTool.podspec
pod spec lint MKJTool.podspec
pod trunk push MKJTool.podspec
rm ~/Library/Caches/CocoaPods/search_index.json
pod search MKJTool
8.新建个项目使用pod install 安装刚才发布的库
Podfile如下
#Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'T1' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
pod 'MKJTool'
target 'T1Tests' do
inherit! :search_paths
# Pods for testing
end
end
pod install安装成功使用如下
Cocoapods本地私有库
本地仓库无非就是存储在本地,本地作为服务器,让其他项目一起使用这个工具
1.新建工程,目录还是一样
2.创建上面目录的podspec
这里由于和上面发布到网上不同,这个是本地库,会有一些区别
Pod::Spec.new do |s|
s.name = 'LibTool'
s.version = '0.0.1'
s.summary = 'Tool'
s.homepage = 'https://github.com/DeftMKJ/TestLibMKJ'
s.license = 'MIT'
s.authors = {'Mikejing' => '714831204@qq.com'}
s.platform = :ios, '6.0'
s.source = {:git => '', :tag => s.version}
s.source_files = 'LibTool/**/*.{h,m}'
s.requires_arc = true
end
source里面git不需要写了,其他还是根据具体信息名称填写
随后创建Podfile文件
platform :ios, '9.0'
target 'Test' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks
# use_frameworks!
# Pods for Test
pod 'LibTool', :path=> '../'
pod 'AFNetworking'
target 'TestTests' do
inherit! :search_paths
# Pods for testing
end
end
这里有两个例子,一个是本地的一个是AF,本地的后面跟的是podspec的目录,这样cocoapods就会根据本地路径查找工具安装,会在对应的path下面查找LibTool.podspec文件进行安装
装了本地库,项目的结构会变成这样多了一个Development Pods
OK,私有库和远程发布Demo就非常简单的完成了
开了个篇,未完待续。。。。。。
参考文章