私有pod库创建过程

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

私有pod库创建过程_第1张图片

第二种解决办法:

在做选择时,测试框架选成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

个人认为这两种方式都不够优雅,还是空仓库的方法更好一点

你可能感兴趣的:(Cocoapods,iOS,私有pod,cocoapods)