1. 程式人生 > 其它 >ios技術分享| iOS 釋出 framework 到 Cocoapods 以及常見問題

ios技術分享| iOS 釋出 framework 到 Cocoapods 以及常見問題

前言

CocoaPods 是一個用來管理 Xcode 依賴庫的專案,通過 CocoaPods,我們可以直觀集中和
自動化地管理我們專案的第三方庫。

本篇文章講述如何將 framework 釋出到 Cocoapods 以及釋出中遇到的常見問題。

註冊 CocoaPods 的 Trunk 服務

  1. 執行完以下命令,去郵箱點選 Trunk 驗證連結。
$ pod trunk register yourEmail 'your name' --verbose

example:

pod trunk register [email protected] 'anyrtc' --verbose

  1. 查詢註冊資訊。
$ pod trunk me

Cocoapods 釋出

常見的CocoaPods 釋出使用 Github 上的 git 方式,然而 spec.source 支援 git, hg, bzr, svn and HTTP。日常開發推薦使用 git 方式。

git 方式

  spec.source = { :git => "https://github.com/anyrtc/xxx.git", 
                     :tag => "#{spec.version}",
                     :submodules => true }
  1. 建立工程
  1. 從 Github 上將剛建立的專案 clone 下來,使用終端進入根目錄,建立
pod spec create xxx
  1. 修改配置檔案

配置檔案如何修改?詳見 Cocoapods guides

spec 配置,前往 CocoaPods ,可查詢所有 Cocopoads 上庫的相關資訊

  1. 提交到 Github 倉庫,目錄如下:
git add .
git commit -m “commit message”
git push -u origin master
  1. 生成tag並推送,對應spec.source。
$ git tag '1.0.0'
$ git push --tags
$ git push origin master

$ pod spec lint --allow-warnings
(詳細 pod spec lint xxx.podspec --verbose)

pod trunk push
或
pod trunk push xxx.podspec
或
pod trunk push xxx.podspec --allow-warnings

http 方式

  spec.source = { :http => 'https://anyrtc.com/ios/xxx.zip'}

建立修改 spec 配置檔案,直接 pod trunk push

Cocoapods 釋出常見問題

  1. pod trunk push 時出現如下錯誤:
[!] Source code for your Pod was not accessible to CocoaPods Trunk. Is it a private repo or behind a username/password on http?

造成這個錯誤的可能很多,CocoaPods issues

如果使用 spec.source 使用 http 方式導致上述錯誤,可能是 http 地址驗證失敗或新增防盜鏈導致,地址使用http 或 https 均可 。

  1. pod trunk push 時出現如下錯誤:
[!] The spec did not pass validation, due to 1 warning (but you can use `--allow-warnings` to ignore it).

解決方法

解決警告或者直接忽略

$ pod trunk push xxx.podspec --allow-warnings
  1. pod search xxx 時出現如下錯誤:
[!] Unable to find a pod with name, author, summary, or description matching `xxx`

解決方法

$ rm ~/Library/Caches/CocoaPods/search_index.json
$ pod update
  1. pod trunk push 時出現如下錯誤:
[!] Validating podspec
 -> xxx
    - ERROR | [iOS] unknown: Encountered an unknown error ([!] /usr/local/bin/git clone https://github.com/ /var/folders/y7/n65v0jv56m1_7cnw2_rgkw_40000gn/T/d20200730-14094-1fdff6i --template= --single-branch --depth 1 --branch 4.0.1

Cloning into '/var/folders/y7/n65v0jv56m1_7cnw2_rgkw_40000gn/T/d20200730-14094-1fdff6i'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 60
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed
) during validation.

[!] The spec did not pass validation, due to 1 error.

解決方法

網上查詢都是說打tag,重複幾次均無效,暴力解決 -> 刪除遠端倉庫重新提交 -> 成功。

  1. pod trunk push 時出現如下錯誤:
[!] Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.

解決方法

① 查詢註冊資訊

$ pod trunk me

② pod trunk register 郵箱 名字

$ pod trunk register [email protected] yusheng

③ 查收郵件,點選郵件連結,重新提交即可。