iOS,製作屬於自己cocoapods,(framework,bundle)

Oranges發表於2017-12-23

緣由: 還是那個小活,需求方想用cocoapods來整合framework,由於之前,我從沒有自己做過屬於自己的cocoapods,所以也是一臉懵逼,各種查資料.

製作cocoapods步驟:

  • 程式碼提交到github平臺
  • 建立.podspec
  • 編輯.podspec
  • 專案打tag
  • 驗證.podspec
  • 註冊 cocoapods trunk帳號
  • 釋出.podspec到cocoapods

1.程式碼提交到github平臺

1.在github上建立一個新的倉庫<圖中的1、2一定要選擇,2可以是其他的License>

建立倉庫.png

2.clone程式碼到本地

複製地址.png

克隆.png

3.相加自己的專案,然後提交到github上 git add . git commit -m "描述" git push origin master

2.建立.podspec

在專案目錄下,執行命令建立.podspec,一下3中方式都可以建立:

  • $ pod spec create CFMobAdSDK.podspec
  • $ touch CFMobAdSDK.podspec
  • $ vim CFMobAdSDK.podspec

3.編輯.podspec

記住:不要用文字編輯開啟編輯,不要用文字編輯開啟編輯,不要用文字編輯開啟編輯, 可以用atom編輯 可以用vim命令編輯,vim狀態下,按i進入編輯狀態,按esc退出編輯狀態,然後輸入:wq儲存退出編輯

:Pod::Spec.new do |s|
    s.name         = "CFMobAdSDK"
    s.version      = "1.0.6"
    s.ios.deployment_target = '7.0'
    s.summary      = "廣告sdk,一個簡單的廣告SDK."
    s.homepage     = "https://github.com/lixianshen/CFMobAdSDK"
    s.license              = { :type => "MIT", :file => "LICENSE" }
    s.author             = { "Simple" => "810646506@qq.com" }
    s.source       = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => s.version }
    #s.source_files  = "CFMobAdSDK/*"
    s.resources          = "CFMobAdSDK/CFMobAdSDK.bundle"
    s.frameworks = 'Foundation', 'UIKit', 'CoreLocation', 'AdSupport'
    s.vendored_frameworks = 'CFMobAdSDK.framework'
    s.requires_arc = true
end
複製程式碼

下面介紹一下.podspec中部分程式碼的含義:

  • s.name:名稱,pod search 搜尋的關鍵詞,一定要和.podspec的名稱一樣,否則報錯

  • s.version:版本號

  • s.ios.deployment_target:支援的pod最低版本

  • s.summary: 簡介

  • s.homepage:專案主頁地址

  • s.license:開源協議(建立github庫的時候選擇的)

  • s.author:作者資訊(這裡隨便謝謝也可以通過)

  • s.social_media_url:社交網址

  • s.source:專案的地址

  • s.source_files:需要包含的原始檔

  • s.resource:資原始檔,單個

  • s.resources: 資原始檔(含bundle)

  • s.requires_arc: 是否支援ARC

  • s.dependency:依賴庫,不能依賴未釋出的庫.如AFNetWorking

  • s.vendored_frameworks:包含的framework,也就是我們自己製作的pod

  • s.description:描述,字數要比s.summary

  • s.screenshots:截圖

  • s.exclude_files:隱藏的檔案

  • s.public_header_files:公開的標頭檔案

  • s.framework:所需的framework,單個

  • s.frameworks:所需的framework,多個用逗號隔開

  • s.vendored_libraries:包含的的.a 注意事項:

  • 多個s.dependency可以這樣寫,(可以加上版本號): s.dependency = 'AFNetworking', '~> 2.3' s.dependency = 'SDWebImage' s.dependency = 'AFNetworking'

  • s.license可以用下面2中寫法: s.license = "MIT" 會有一個警告 s.license = { :type => "MIT", :file => "LICENSE" }

  • s.source_files:寫法及含義:

"CFMobAdSDK/*
"CFMobAdSDK/*.{h,m}"
"CFMobAdSDK/**/*.h"
複製程式碼

” 表示匹配所有檔案 “.{h,m}” 表示匹配所有以.h和.m結尾的檔案 “**” 表示匹配所有子目錄

  • s.source 常見寫法

    /// git commit -m =>"13287dd",講pod版本與git倉庫中的某一次提交繫結
    s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :commit => "13287dd" }
    
    /// 將這個Pod版本與Git倉庫中某個版本的comit繫結 
    s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => 1.0.0 }
    
    /// 將這個Pod版本與Git倉庫中相同版本的comit繫結
    s.source = { :git => "https://github.com/lixianshen/CFMobAdSDK", :tag => s.version }
    複製程式碼

4.上傳編輯好的.podspec

5.tag標記,並且上傳

```
/// 第一次需要在前面加一個v
git tag "v1.0.0"
git push --tags
```
複製程式碼

6.驗證.podspec

方式一

// 加上--verbose驗證失敗會顯示詳細的報錯資訊
pod spec lint CFMobAdSDK.podspec --verbose
複製程式碼

方式二

pod spec lint
複製程式碼

驗證開始

-> CFMobAdSDK
複製程式碼

成功:

驗證成功.png

驗證失敗的一些情況: 1.下面這種情況,只要在終端執行命令:echo "2.3" > .swift-version

echo .swift-version.png">

2.- ERROR | [iOS] file patterns: The source_files pattern did not match any file. 解決方法: 檔案路徑不對, 也就是設定 s.source_files 欄位時, 發生了錯誤 3.- ERROR | [iOS] file patterns: The vendored_frameworks pattern did not match any file. 解決方法: framework路徑不對, 也就是設定 s.vendored_frameworks 欄位時, 發生了錯誤

7.註冊cocoapods trunk

  • trunk需要cocoaPods的版本在0.33版本,用pod --version,如果版本低,先升級sudo gen install cocoapodspod setup

  • 註冊的三種方式:

    • pod trunk register eloy@example.com Eloy Durán --description=Personal Laptop
    • pod trunk register eloy@example.com --description=Work Laptop
    • pod trunk register eloy@example.com

這個時候,你填寫的郵箱會收到一封郵件,把連結複製,在瀏覽器開啟就可以了,如果沒有開啟這個連結,下面的步驟是不能進行的

  • 檢視註冊資訊:
pod trunk me
複製程式碼
  - Name:     lixianshen
  - Email:    810646506@qq.com
  - Since:    May 1st, 01:51
  - Pods:
  - CFMobAdSDK
  - Sessions:
  - May 1st, 01:51 - September 7th, 08:30. IP: 125.121.226.128 Description:
    Simple
  - May 2nd, 18:35 - September 7th, 18:43. IP: 125.118.107.149
  - May 2nd, 20:55 - September 7th, 21:05. IP: 125.118.107.149
  - May 4th, 02:19 - September 9th, 02:20. IP: 125.118.107.149
複製程式碼

8.釋出自己的.podspec到cocoapods

  • pod trunk push CFMobAdSDK.podspec

  • 如果有警告用:pod trunk push CFMobAdSDK.podspec --allow-warnings

    1.先驗證是否正確

    驗證是否正確.png

    2.釋出成功

    釋出成功.png

    3.檢查自己釋出的pod

    檢查之前先刪除快取中的json文字 ~/Library/Caches/CocoaPods/search_index.json

    5581BF55-1A5F-41BA-88C7-34F90B0FA421.png
    如果不刪除,會搜尋不到自己釋出的,如果讓你朋友也要查到也要刪除現有的快取

    4.搜尋記錄

    搜尋記錄.png

    如果想刪除已發的版本,需要使用下面的命令:

    pod trunk delete CFMobAdSDK 版本號
    複製程式碼

    例如

    pod trunk delete CFMobAdSDK 1.0.1
    複製程式碼

    到這基本結束了:下面是幾個和本內容相關的比較好的連結:

結束語:

如果發現問題,或者有不懂的地方,請留言

相關文章