1. 程式人生 > 其它 >CocoaPods 自定義三方框架

CocoaPods 自定義三方框架

技術標籤:Xcodeios

1、建立專案以及配置資訊

  • 建立框架專案
  • 開啟終端,專案目錄下執行命令
// FrameworkName
pod lib create FrameworkName 

//此步驟會從git clone 一份專案框架 ,會有幾個問題需要回答 諸如專案的語言型別 、選擇測試框架、是否需要UIView 測試介面等問題
//完成後專案會自動開啟

2、配置專案資訊

  • 把framework需要的類檔案放到 XXX/Classes(沒有就新建)目錄下
  • 把framework需要的資原始檔放到XXX/Assets目錄下
  • 專案中有個.podspec的檔案,它就是配置檔案了
    #
    # Be sure to run `pod lib lint XXX.podspec' to ensure this is a
    # valid spec before submitting.
    #
    # Any lines starting with a # are optional, but their use is encouraged
    # To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html
    #
    
    Pod::Spec.new do |s|
     #pod庫 名稱
      s.name             = 'XXX'
     #pod庫 版本
      s.version          = '0.1.1'
     #詳細介紹
      s.summary          = 'A short description of XXX.'
    
    # This description is used to generate tags and improve search results.
    #   * Think: What does it do? Why did you write it? What is the focus?
    #   * Try to keep it short, snappy and to the point.
    #   * Write the description between the DESC delimiters below.
    #   * Finally, don't worry about the indent, CocoaPods strips it!
    
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
        
    //主頁 
      s.homepage         = 'https://github.com/XXX/xxx' 
    # 截圖
      # s.screenshots     = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
    # 作者資訊
      s.author           = { 'xx' => '
    [email protected]
    ' } # git:專案所在路徑,這個比較重要。在打包或者拉取pod的時候,都是根據這個路徑拉取的 # 如果你只是想打個framework可以填本地路徑就行 '/Users/xx/xx/xx' # 如果你想作為pod來用的話,就需要給專案建立個一直能訪問的遠端倉庫了,這個專案預設是沒有關聯遠端倉庫的 # tag:對應git中的tag s.source = { :git => 'https://github.com/xxx/xxx.git', :tag => s.version.to_s } # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' s.ios.deployment_target = '9.0' s.source_files = 'xxx/Classes/**/*' # s.resource_bundles = { # 'YKUtils' => ['xxx/Assets/*.png'] # } # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' # 依賴的其他pod s.dependency 'RxSwift' end

    打包framework、上傳至公共Spec

  • 先執行一下,檢視是否有問題
  1. cd到Example資料夾下,執行pod install,專案會安裝我們配置的檔案。
    寫一段程式碼測試一下。執行並檢視執行效果,和預期一致說明沒問題了,如果有錯誤檢查配置是否正確、依賴的檔案是否都複製到了ClassesAssets中。自己慢慢排查吧

  2. 提交原始碼並且打上tag,注意這裡的tag要和配置檔案中s.sourcetag一致

    git add *
    git commit -a -m 'v0.1.1'
    git tag -a 0.1.1 -m 'v0.1.1'
    
    // 推送程式碼和tag
    git push
    git push --tags
    
    
    //PS 如果專案沒有關聯到遠端專案庫需要執行下面的指令關聯
    //如果你的s.source 的 git是遠端倉庫的話,需要把程式碼和tagpush到遠端。框架專案預設是沒有關聯遠端倉庫的。新建一個空的遠端倉庫,然後關聯一下
    
    // 關聯遠端倉庫
    git remote add origin ssh:/xxxx/sss/tttttttt.git
    git push -u origin master

  3. 驗證類庫

  • cd 到專案根目錄下

pod lib lint xxx.podspec --only-errors --verbose
// 安裝cocoapods-packager外掛 已經安裝可以忽略
sudo gem install cocoapods-packager

// 打包靜態.a庫
pod package BZLib.podspec --library --force
// 打包靜態framework庫
pod package BZLib.podspec --force

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

  • 上傳至公共podSpec
  • 這裡會使用到cocoapod的trunk工具,計算機初次使用的話需要註冊一個賬號
pod trunk register [email protected] 'xxx' --description='description'
  • 你會收到一個驗證的郵件,驗證完就註冊完成了
  • 部署庫

pod trunk push xxx.podspec

提示成功就大功告成了!