美文网首页
iOS 组件化之创建私有podspec

iOS 组件化之创建私有podspec

作者: 上升的羽毛 | 来源:发表于2017-12-25 19:11 被阅读50次

    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" => "251230890@qq.com" } # 作者信息
     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

          本文链接:https://www.haomeiwen.com/subject/pztrgxtx.html