iOS 组件化之创建私有podspec

1.准备工作

  • 先去gitHub创建一个项目存放私有Repo源,空的就可以
  • 本地添加私有源 终端执行命令pod repo add XZRepositories [Repo源url](如果之前并未向gitHub push过文件也没有把SSH公钥保存到gitHub,这时候应该会提示你输入gitHub账号密码)
  • 以上操作完成 cd ~/.cocoapods/repos目录下至少会有2个文件夹 XZRepositories 和 master, master文件下面存放的是公有源文件, XZRepositories*目录下目前是空的,后面会存放我们私有源文件
  • 基本准备工作完成。

2.将项目添加到私有源中

(2.1.1)先将工程提交到git上

  • gitHub新建一个project名字和工程一样
  • 终端cd至项目目录下
  • 建立本地仓库git init
  • 将项目中的所有文件添加到本地仓库中git add .
  • 将add的文件commit到仓库中git commit -m "可随意填写"
  • 执行命令git remote add origin [project在git上url]
  • 上传github之前,要先pull一下git pull origin master
  • 上传代码到github远程仓库git push -u origin master

(2.1.2)可能遇见的问题

error:failed to push some refs to git [url]
解决方案:先执行git pull --rebase origin master,再git push -u origin master

(2.2.1)添加到私有源中

  • 因cocoaPods强制添加开源许可文件执行命令echo MIT>FILE_LICENSE创建名为FILE_LICENSE的文件
  • 创建podspec文件pod spec create 工程名
  • 去打开podspec文件,编辑
    编辑模板:
Pod::Spec.new do |s|
 s.name         = "XZGoodsListModule" # 项目名称
 s.version      = "0.0.1"        # 版本号 与 你仓库的 标签号 对应
 s.license      = { :type => "MIT", :file => "FILE_LICENSE" }
 s.summary      = "goods list" # 项目简介

 s.homepage     = "https://git.coding.net/qing1234/XZGoodsListModule.git" # 仓库的主页
 s.source       = { :git => "https://git.coding.net/qing1234/XZGoodsListModule.git", :tag => "#{s.version}" } #你的仓库地址,不能用SSH地址 
 s.resources    = "XZGoodsListModule/XZGoodsListModule/*.{png,bundle}"  # 如果有bundle包,就要加这句话
 s.source_files = "XZGoodsListModule/XZGoodsListModule/**/*.{h,m}" # 你代码的位置, XZGoodsListModule/*.{h,m} 表示 XZGoodsListModule文件夹下所有的.h和.m文件,不要.{h,m}就是所有文件
 s.requires_arc = true # 是否启用ARC
 s.platform     = :ios, "7.0" #平台及支持的最低版本
 # s.frameworks   = "UIKit", "Foundation" #支持的框架
 s.dependency "XZMediator"  # 依赖库
 s.dependency "XZGoodsModel" # 依赖库
 s.dependency "XZGoodsListModuleCategory" # 依赖库

 # User
 s.author             = { "qing" => "[email protected]" } # 作者信息
 s.social_media_url   = "http://www.jianshu.com/u/2987f5a5790f" # 个人主页

end
  • 看一下你先的tag git tag

  • 添加tag git tag 0.0.1

  • 提交tag git push origin master --tags

  • 把podspec文件提交上去pod repo push [远程库名] [项目名].podspec --verbose --allow-warnings
    pod repo push [远程库名] [项目名].podspec --verbose --allow-warnings 的过程就是:

    1)、验证 [项目名].podspec 文件
    2)、拉取远程版本库 [远程库名]
    3)、添加 [项目名].podspec 到版本库中
    4)、 push 到远程

  • 搜索pod search 项目名

(2.2.2)可能遇见的错误

  • ERROR | file patterns: The source_files pattern did not match any file.
    这是最常见的错误,原因有很多种
    1,pod的网络文件路径不对,所以找不到文件;
    2,git上没有设对应的tag;
    3,pod上没有设置与git tag对应的version;
    解决办法:
$ set the new version to 1.0.0  
$ set the new tag to 1.0.0  (1.0.0要与podspec的version对应)
  • ERROR | [iOS] unknown: Encountered an unknown error (Unable to find a specification for XZMediator depended upon by XZGoodsListModuleCategory) during validation.
    这种错误是你的工程依赖第三方库造成的
    解决办法:
    在提交podspec的命令后面加一个--private 或者 --use-librariespod
    就是这样:
    pod repo push XZRepositories XZGoodsListModuleCategory.podspec --verbose --allow-warnings --private
    或者
    pod repo push XZRepositories XZGoodsListModuleCategory.podspec --verbose --allow-warnings --use-libraries
  • pod search 搜索不到你传的项目
    因为你本地search_index.json文件没有更新
    解决办法:
    前往文件~/Library/Caches/CocoaPods/search_index.json 把search_index.json文件删除,然后再pod search 项目名,之后terminal就会一直显示Creating search index for spec repo 'master'..,接下来就只能一直等了,我反正等了很久很久。

你可能感兴趣的:(iOS 组件化之创建私有podspec)