你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS組件化開發之Pod公有庫

iOS組件化開發之Pod公有庫

編輯:IOS開發綜合

IOS組件化開發之Pod公有庫

組件化的目的:

依賴解耦 開發靈敏 團隊分工明白 進步代碼質量 放慢編譯速度 處理多團隊開發互相影響問題

工具-必選:

cocoapods 1.x 之後版本 cocoapods-packager gitlab

工具-可選:

zsh item2

cocoapods 是支持 svn 的,但是 git 絕對方便一些。
`
**注:**以
OTBase` 為例

一、創立公有庫 1、創立規范工程

為方便疾速生成一致工程構造的組件工程,運用如下命令來創立工程。如何運用 pod lib

`pod lib create OTBase` 

目錄構造如下:

├── Example
│   ├── OTBase
│   ├── OTBase.xcodeproj
│   ├── OTBase.xcworkspace
│   ├── Pods
│   └── Tests
├── OTBase
│   ├── Assets
│   └── Classes
└── _Pods.xcodeproj -> Example/Pods/Pods.xcodeproj

次要有兩局部組成

OTBase: 組件源碼 Example:Demo 工程,會 pod OTBase 庫到此 demo 工程,方便調試

pod lib會從 github 下載模版工程,創立完成會自動翻開 Example 下的OTBase.xcworkspace,在 pod 的工程下有一個Development Pods目錄,pod 把我們的源碼做為 Demo 工程的一個 pod 庫,這跟實踐運用是一樣的了。只不過我們要改源碼。

2、修正 podspec

修正 OTBase.podspec內容,參考:

Pod::Spec.new do |s|
  s.name             = 'OTBase'
  s.version          = '0.1.0'
  s.summary          = 'Modular develope base module.'
  s.description      = <<-DESC
  Base module is required for other module.
                       DESC

  s.homepage         = 'http://git.rigelxu.com/IOS_Base_Framework'
  s.license          = { :type => 'Copyright', :text => 'Copyright 2016, All rights reserved.\n' }
  s.author           = { 'Rigel' => '[email protected]' }
  s.source           = { :git => 'http://git.rigelxu.com/IOS_Base_Framework.git', :branch => 'master' }     # :tag => s.version.to_s }
  s.source_files = 'OTBase/Classes/**/*'
  s.ios.deployment_target = '8.0'
  s.frameworks = 'UIKit'
  s.dependency 'MGJRouter', '~> 0.9.1'
end

為了方便s.source 可以暫時指定 master分支或許所在的分支。

3、打包
pod package OTBase.podspec

cocoapods-packager會打好可用的 framework 包括模仿器和真機。包放在工程目錄下的OTBase-0.1.0/ios.

注:pod package 默許運用的是 release 形式,假如需求打 debug,添加上參數--configuration

留意:假如需求切換源碼和二進制庫,需求將打好的.framework 上傳到寄存二進制庫的獨自倉庫的與 podspec 版本對應的 tag 上。

4、提交組件至公有倉庫

更詳細的發布流程
下面曾經打出 framework,可以直接手動導 framework 的方式運用。當然更好的辦法是運用 pod.

在 gitlab創立一個spec倉庫

一切需求運用此倉庫的電腦上,添加pod公有倉庫

pod repo add 倉庫名 倉庫地址

驗證 podspec
pod spec lint OTBase.podspec --allow-warnings

提交 podspec文件到 spec 倉庫

pod repo push OTSpec OTBase.podspec

5、源碼、靜態庫切換

我們運用的第三方庫,pod到工程裡的都是源碼,pod 會在我們編譯的時分打成靜態庫/靜態庫。但是組件開發的時分為了進步編譯效率,默許運用靜態庫比擬好,只要在需求的時分,比方遇到問題需求 debug,發布消費,再 pod 源碼到工程。

那麼如何疾速方便的切換源碼和靜態庫?有以下幾個思緒:

辦法一:運用不同的 podspec,一個指向源碼,一個指向二進制庫;運用時在 podfile 裡修正對應庫名即可。比方靜態庫是 pod 'OTBase',源碼是pod 'OTBase_source_code'

辦法二:添加環境變量,podspec 裡添加判別如下:

   if ENV['IS_SOURCE_CODE']
        s.source_files = 'OTBase/Classes/**/*'
    else
       s.ios.vendored_frameworks = 'OTBase-0.1.0/ios/OTBase.framework'
   end

需求運用源碼時在命令前添加環境變量:如

IS_SOURCE_CODE=1 pod install

假如思索源碼保密問題,可以將 framework 獨自放一個倉庫管理。podspec 的配置如下:

      if ENV['IS_SOURCE_CODE'] || ENV['OTBase_SOURCE']
        puts 'OTBase is  source'
        s.source           = { :git => 'http://github.com/OurTeam/iOS_Base_Framework.git', :branch => 'master' } 
        s.source_files = 'OTBase/Classes/**/*'
      else
        puts 'OTBase is binary'
    s.source           = { :git => 'http://github.com/OurTeam_Binary/iOS_Base_Framework.git'  :tag => s.version.to_s}
        s.resource      = 'OTBase.bundle' #有資源時運用,留意將.framework 裡的資源bundle 刪除,`.bundle` 與 `.framework` 一同打包成.zip
        s.ios.vendored_frameworks = 'OTBase.framework'
      end
二、運用公有庫

添加組件公有倉庫

pod repo add OTSpec http://github.com/OurTeam/spec.git

添加公有 repo 到 podfile,同時還需求添加原 pod master 倉庫,如下:

source https://git.xxx.com/spec.git
source 'https://github.com/CocoaPods/Specs.git

將要運用的組件添加至 Podfile pod install

當需求 pod 源碼的時分先清算,再 install

pod cache clean OTBase
rm -rf Pods/OTBase
IS_SOURCE_CODE=1 pod install
三、一些坑 假如運用的是 git-lib,假如 group 是公有的,那麼無法創立 public 倉庫 之前直接把.framework上傳到 git-lib,以 http 下載文件的方式常常解壓失敗,換到其它 http 服務器 ok 了,能夠文件跟文件的無效期有關。二進制庫也運用 git 倉庫的方式也沒這種問題了。 運用了環境變量後打包命令也要修正,IS_SOURCE_CODE=1 pod package OTBase.podspec 假如有資源,資源會打包到 Framework 目錄裡。在運用二進制文件時,需求刪除Framework裡的資源文件,將資源 .bundle.framework 一同打包成.zip,參考此文:Pod二進制化 在源碼和二進制文件停止切換時,一定要先執行清算。pod cache clean xxx, 然後再刪除 Pods目錄 某個組件可以添加一個獨自的環境變量,以方便此開發中的組件運用源碼,其它組件運用二進制文件。否則Example 工程 pod install 的時分 OTBase target 就消逝了,由於默許運用了二進制的庫。

【iOS組件化開發之Pod公有庫】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved