本地Pod庫對應的Podfile和Podspec如何寫?

通常咱們製做的pod公有庫或者是私有庫都放在遠程,而且每次修改都須要push;若是僅僅是放在本地進行調試的模塊/組件,那麼對應的podfile文件以及podspec應該如何編寫呢?html

一、搭建測試項目以及framework

1)先建立一個測試項目ios

image

2)建立一個framework,放到和測試項目同一個目錄下git

image

3)再建立一個類MTPopViewgithub

image

4)關掉MTPopView,而後在MTShopList項目中經過Add Files添加MTPopViewswift

image

5)按照正常的target相互調用那樣,添加framework,以及import MTPopControlruby

image

6)編譯MTShopList報錯網絡

image

須要在class MTPopView前面加上publicide

image

再編譯運行就ok了。測試

這裏swift報錯緣由你們應該是很熟悉了;swift訪問權限總共有private、fileprivate、internal、public、open 5種,默認狀況下是internal修飾,而咱們目前是2個不一樣的target進行訪問,屬於不一樣的模塊,因此另外一個target沒法訪問,須要修改訪問權限爲public便可(這裏可否用open,它們的區別你知道嗎?)。ui

二、編寫pod文件

1)如何編寫本地測試的podspec?

經過命令pod spec create MTPopControl生成自動的podspec文件,而後替換以及刪除本身不想要的命令;這裏就直接簡化寫了,以下:

Pod::Spec.new do |spec|

  spec.name         = "MTPopControl"
  spec.version      = "0.0.1"
  spec.summary      = "A short description of MTPopControl."
  spec.homepage     = "http://EXAMPLE/MTPopControl"
  
  spec.license      = "MIT"
  spec.author       = { "xk" => "" }
  
  #遠程push的寫法
  #spec.source       = {:git => 'https://github.com/xxx/xxxxx.git', :tag => spec.version}
  spec.source       = { :path => '.' }
  spec.source_files  = "MTPopControl"
  
  spec.requires_arc = true
  spec.swift_version = "5.0"
  spec.ios.deployment_target = "11.0"
  
end

主要是關注屬性spec.source的寫法不一樣了,咱們這裏是本地

官方的示例:

pod 'AFNetworking', :path => '~/Documents/AFNetworking'

這個時候就不能經過命令 pod lib lint-本地驗證你的pod是否有效,會報錯的,由於咱們這裏是本地路徑。

xk$ pod lib lint MTPopControl

 -> MTPopControl
    - ERROR | spec: The specification defined in `MTPopControl` could not be loaded.

Is a directory @ io_fread - MTPopControl

[!] MTPopControl did not pass validation, due to 1 error.
You can use the `--no-clean` option to inspect any issue.

2)podfile如何編寫?

首先刪除framework對應的target

image

關閉項目MTShopList

在項目MTShopList路徑下,經過命令:

xk$ pod init

打開Podfile文件,添加內容:

# Pods for MTShopList
pod 'MTPopControl', :path => '../MTPopControl'

再安裝:

xk$ pod install

三、驗證測試

打開生成的workspace,這個時候就能看到pod對應的project比咱們平時的項目多了一個Development Pods文件夾,裏面放的就是剛導入的framework。

image

編譯運行項目Succeeded!

最後:本文采用這種Pod開發方式的好處就是能夠一我的快速開發調試,不用每次修改完依賴庫都把podspec 以及對應的庫 push上去,有時候網絡不穩定的狀況下會等好久,影響開發效率;待最後調試的模塊/組件穩定後或是多人開發仍是須要製做成私有庫push上去,進行統一版本管理。

參考文獻:

【1】 https://www.raywenderlich.com...

【2】https://guides.cocoapods.org/...

相關文章
相關標籤/搜索