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" => "251230890@qq.com" } # 作者信息
 s.social_media_url   = "http://www.lxweimin.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'..,接下來就只能一直等了,我反正等了很久很久。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容