1、创建pod的git仓库
2、把仓库的clone地址复制一下
3、pod repo可以看到本地所有的repo,包括path也就是文件路径也可以看到
4、pod repo add PrivatePods clone地址
注意:
官方创建私有pod文档:CocoaPods Guides - Private Pods
这个命令执行完毕后,通过pod repo找到PrivatePods的路径cd进去
mkdir Specs
cd Specs/
touch empty
git add .
git commit -m "empty file"
git pull
git push
之后再通过pod repo push PrivatePods xxx.podspec时,新的索引文件就都是存放在PrivatePods/Specs下的了
参考了GitHub - aliyun/aliyun-specs: Aliyun Mobile Service CocoaPods specs.的第一次提交(History for Specs - aliyun/aliyun-specs · GitHub)Add specs dir.
5、再次执行pod repo看看名为PrivatePods的repo是否存在
6、创建一个存放代码库的文件夹,比如在桌面上创建一个名为PodCode的文件夹,并且cd进去
7、执行 pod lib create PodTest创建一个PodTest
注意:这里测试框架选成None,是否要view测试选成No
否则会因为网的问题导致整个过程不成功
8、把PodTest > PodTest > Classes 下的Replace.m文件替换为你的库代码文件
9、cd到Example文件夹下,运行pod install,然后到工程目录中点开pods工程看看文件能否被正常加载
10、再创建一个git仓库,将我们本地的PodTest工程添加到这个repository上
具体做法
注意:这里创建的git仓库 不用设置.gitigore,不用开源协议(MIT等),不要Readme文件,这样可以避免pull和push的时候不成功(因为会出现两个无关的不能合并的commit)
cd existing_git_repo
git remote add origin clone用的地址(例如:https://xxxx.com/yyyyy/PodTest.git)
git push -u origin master
11、每次修改完pod中的源文件,紧接着要修改podspec文件升级版本号,然后push之后要记得打tag,tag与podspec中写的版本号保持一致
注意:每次修改完podspec文件记得都要执行pod lib lint检查podspec文件
注意:打好tag之后,要执行pod repo push PrivatePods PodTest.spec
如果报错:
The repo PrivatePods at ../.cocoapods/repos/PrivatePods is not clean
执行一下
pod repo update PrivatePods
Pod::Spec.new do |s|
s.name = 'PodTest'
s.version = '0.0.1'
s.summary = 'PodTest'
# This description is used to generate tags and improve search results.
# * Think: What does it do? Why did you write it? What is the focus?
# * Try to keep it short, snappy and to the point.
# * Write the description between the DESC delimiters below.
# * Finally, don't worry about the indent, CocoaPods strips it!
s.description = <<-DESC
测试工程 PodTest
DESC
s.homepage = 'https://xxxx.com/yyyyy/PodTest'
# s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'aaaaaa' => '[email protected]' }
s.source = { :git => 'https://xxxx.com/yyyyy/PodTest.git', :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/
s.ios.deployment_target = '8.0'
s.source_files = 'PodTest/Classes/**/*'
# s.resource_bundles = {
# 'PodTest' => ['PodTest/Assets/*.png']
# }
# s.public_header_files = 'Pod/Classes/**/*.h'
# s.frameworks = 'UIKit', 'MapKit'
# s.dependency 'AFNetworking', '~> 2.3'
end
遇到的问题:
1、
执行pod lib create PodTest总是失败,通过查看错误信息
[!] CDN: trunk Repo update failed - 20 error(s):
CDN: trunk URL couldn't be downloaded: https://raw.githubusercontent.com/CocoaPods/Specs/master/Specs/e/9/5/Expecta/0.1.0/Expecta.podspec.json, error: Failed to open TCP connection to raw.githubusercontent.com:443 (Connection refused - connect(2) for "raw.githubusercontent.com" port 443)……
总结和trunk URL 有关,经过试验,
第一种解决办法:在Example文件夹中podfile中添加
source 'GitHub - CocoaPods/Specs: The CocoaPods Master Repo'
官方源,重新pod install,可以成功安装testing framework和view based testing
第二种解决办法:
在做选择时,测试框架选成None,是否要view测试选成No,也可以解决
2、
通过pod lib create PodTest之后,在文件夹PodTest中已经默认执行过git init和创建过.gitignore文件了
所以如果在创建你的pod工程的git仓库时就不用设置.gitigore,不用开源协议(MIT等),不要Readme文件,整一个空仓库就好
否则的话,在第一次pull的时候报错refusing to merge unrelated histories
遇到这种情况时网上给出两种解决办法一是git pull origin master --allow-unrelated-histories,二是git push -f
个人认为这两种方式都不够优雅,还是空仓库的方法更好一点