1. 程式人生 > >podSpec檔案相關知識整理

podSpec檔案相關知識整理

上一篇文章整理了我用SVN建立私有庫的過程,本文將整理一下有關podSpec檔案的相關知識。

podSpec中spec的全稱是“Specification”,說明書的意思。顧名思義,這是用來描述你這個私有pod的說明資訊的。
podSpec是cocoapods的一種檔案格式,有一套自己的語法,我們可以到cocoapods官網進行詳細瞭解(https://guides.cocoapods.org/syntax/podspec.html)。

建立podSpec很簡單,只要建立一個以.podSpec為字尾的檔案即可,或者直接拷貝別人的進行修改也可以。

它的建立命令是:$pod spec create TestFile

podspec檔案的常用配置欄位介紹

Pod::Spec.new do|s| 框架名字:框架名字一定要寫對,pod search "框架名"就是搜的這個   s.name         = "yoowei" 框架版本號   s.version      = "1.0.0" 框架簡介   s.summary      = "yoowei框架" 框架的主頁   s.homepage     = "https://git.oschina.net/yoowei" 框架遵守的開源協議   s.license      = 'MIT' 框架的作者   s.author       = { "yoowei" => "yoowei
@126.com
" } 框架的資源路徑:路徑可以指向遠端程式碼庫,也可以指向本地專案,例如:                      1.指向遠端程式碼庫: { :git => "[email protected]:yoowei/yoowei.git", :tag => "1.0.0" }                      2.指向本地專案:    { :path => 'yoowei', }   s.source       = { :git => "[email protected]:yoowei/yoowei.git", :tag => "1.0.0" } 框架被其他工程引入時,會匯入yoowei目錄下的.h和.m檔案   s.source_files = 'yoowei/**/*.{h,m}' 框架被其他工程引入時,會匯入yoowei/resource目錄下的資原始檔   s.resources    = {
'yoowei' => ['yoowei/resource/**/*.{storyboard,xcassets,xib,png'] } 框架依賴的framework   s.framework    = 'CoreData' 框架依賴的其他第三方庫   s.dependency 'MBProgressHUD' 框架是否需要支援ARC   s.requires_arc = true 框架支援的最低平臺版本   s.platform     = :ios'7.0' 框架公開的標頭檔案  s.public_header_files = 'yoowei/**/*.h'    end 大型專案模組化管理

隨著iOS APP越來越複雜,功能越來越多,對於iOS專案的工程化要求也越來越高了,對於複雜的APP一般都需要對專案進行模組化管理。

模組化有幾個方式:

1. 目錄結構管理:這是最原始的方式,僅僅通過目錄結構實現程式碼層次的清晰化。但本質上並沒有解決程式碼之間的依賴混亂的情況,模組化劃分也非常不清晰。

2. 子工程:通過子工程可以實現程式碼依賴管理和模組化,但是需要引入複雜的設定,不利於管理。

3. 靜態庫:將依賴程式碼打包成為靜態庫.a,不過由於不能看到原始碼,除錯不方便。

自從有了CocoaPods,可以使用它來管理私有庫,從而實現了程式碼模組化管理。例如下圖所示:

CocoaPods私有庫

1. 建立私有的Specs git庫

  例如在github上面建立一個空的git庫:https://github.com/xxx/MySpecs

  將這個git庫加入到CocoaPods庫的列表中:

pod repo add MySpecs [email protected]:xxx/MySpecs.git

  此時可以檢查下本地的pod repo

<br class="Apple-interchange-newline">$ pod repo list<br><br>MySpecs

- Type: git (master)- URL: [email protected]:xxx/MySpecs.git
- Path: /Users/xxx/.cocoapods/repos/mySpecs
master
- Type: git (master)
- URL:  [email protected]:CocoaPods/Specs.git
- Path: /Users/xxx/.cocoapods/repos/master

  確定私有庫的Specs已經加到本地pod repo中。 

2. 在私有庫專案中建立podspec檔案

在私有庫專案中的根目錄,建立對應的podspec檔案,裡面會描述這個庫的基本資訊。

Pod::Spec.new do |s| "PodName" s.version      = "0.0.1" s.summary      = "A short description of PodName." s.license      = { :type => "MIT":text => <<-LICENSE Copyright © 2016年 xxx. All rights reserved. LICENSE } s.author       = { "" => "" } s.source       = { :git => "[email protected]:xxx/PodName.git":tag => "0.0.1" } s.source_files = "**/*.{h,m,mm,c}" s.frameworks   = "Foundation""QuartzCore""UIKit""WebKit" s.libraries    = "z" s.dependency 'AFNetworking' s.ios.deployment_target = '6.0' end

resource: 可以指定資原始檔,建議使用bundle以避免資原始檔產生衝突。

frameworks: 指定這個pod依賴的系統framework

libraries: 指定這個pod依賴的系統動態庫。注意使用的名字:比如需要引用"libz.dylib", 那麼這裡只需要寫"z"

無論原始專案的目錄結構或者group結構,預設的pod裡面的程式碼都會平鋪在根目錄裡面

注意:SubSpecs之間不能存在相互依賴關係,只能單向依賴

3. 驗證私有庫的合法性

pod lib lint --sources='[email protected]:xxx/MySpecs.git' --verbose --use-libraries --allow-warnings

sources引數可以指定私有庫的Pod Specs庫的地址。如果能夠通過,說明程式碼編譯沒有問題

4. 提交私有庫的版本資訊

git tag -m "first release" "0.0.1" $ git push --tags     #推送tag到遠端倉庫

5. 向Spec Repo提交podspec

pod repo push MySpecs PodName.podspec --sources='[email protected]:xxx/MySpecs.git' --use-libraries --allow-warnings

這樣就完成了一個CocoaPods的私有庫的提交了,別人就可以在Podfile裡面使用這個私有庫了。

相關推薦

podSpec檔案相關知識整理

上一篇文章整理了我用SVN建立私有庫的過程,本文將整理一下有關podSpec檔案的相關知識。 podSpec中spec的全稱是“Specification”,說明書的意思。顧名思義,這是用來描述你這個私有pod的說明資訊的。podSpec是cocoapods的一種檔案格式,有一套自己的語法,我們可以到coco

JSON相關知識整理

數據 帶寬 逗號 使用 t對象 n) 防止 一個 ava JSON 全稱:JavaScript Object Notation ,一種輕量級的數據交換格式 示例:{"name":"eric","age":24} {"first":{"name":"eric","

UBNT ex-r +netgear gs105e v2 +ap 設置vlan 步驟記錄 及相關知識整理

style list read 地址 img net 重復 dns 進入 設備連接:路由器ex-r的eth0 連接 光貓撥號,eth3連接交換機gs105e,交換機gs105e的eth3連接無線ap 需求:路由器撥號上網,通過不同ssid的無線網絡可以連接不同vlan,且交

貝葉斯網路(belief network)及相關知識整理

貝葉斯網路(belief network)及相關知識 頻率派:認為theta是個固定的未知常數。認為樣本是隨機的,重點研究樣本分佈 貝葉斯派:認為theta是不確定的未知數。認為樣本是固定的,重點研究引數theta的分佈   貝葉斯的思考方式不同於傳統“非黑即白,非0即1”的思考方

python爬蟲相關知識整理

1.徹底理解cookie,session,token 2.反爬蟲技巧 3.python(字元編碼) 檔案以什麼編碼儲存的,就以什麼編碼方式開啟。而檔案編碼儲存時候使用的編碼方式是右下角的編碼方式,而解碼的時候是使用文件開頭申明的編碼方式,兩種編碼不同的時

Bitmap 優化與相關知識整理

Bitmap圖片佔用記憶體計算: Bitmap圖片在載入到記憶體的時候是按照:寬*高*畫素點位數來計算的。你可以把圖片看成是由width行、height列的矩陣組成,每一個矩陣元素代表一個畫素點,每一個畫素點都是1byte整數倍的資料,這個資料越大,表示的色彩就越豐富,圖片的顯示質量就越高。Bi

連結串列相關知識整理

標語:如果懼怕前面跌宕的山岩,生命永遠只能是死水一潭 連結串列 定義:連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連結次序實現的。 比較: 陣列 連結串列 如何建立連結串列 頭插法

Centos系統相關知識整理

1: man 線上查詢 man ls 2: ls 顯示本目錄下的檔案及目錄 ls -a 顯示本目錄下的所有檔案及目錄(包括隱藏目錄和檔案)ls -l 顯示本目錄下所有檔案的屬性ls -l | grep ^d 只顯示目錄名ls -l | grep ^f 只顯示檔名ls -G 以顏色

spring相關知識整理

一.spring ioc容器 容器的功能:載入配置檔案中定義的bean,將所有bean 集中在一起(存在一個hashMap中),當有需求的時候分配bean(通過bean的去map 中get(key))。 1.BeanFactory容器(最簡單) 1)適用於輕量級的應用程

mongodb服務遷移相關知識整理

因為遷移專案中用到的mongodb這個資料庫。這裡整理一下。 常用操作 show dbs; use 資料庫名: show collections; db.表名.find() db.表名.find().count() db.表名.find().limit(5);查看錶的前5條資料。

工業相機標定相關知識整理

相機標定內參和外參 在影象測量過程以及機器視覺應用中,為確定空間物體表面某點的三維幾何位置與其在影象中對應點之間的相互關係,必須建立相機成像的幾何模型,這些幾何模型引數就是相機引數。在大多數條件下這些

硬體相關知識整理

從事嵌入式底層開發不懂硬體電路的話很被動,整理下一些硬體中的重要知識點: 1. 直流耦合: 直流耦合(DC Coupling)就是直流,交流一起通過,並不去掉交流分量。 比如在3V的直流電平上疊加一個1Vpp的正弦波,如果用直流耦合,看到的是以3V 為基準,+/-0.5V

機器學習基礎知識!(ML,DL,SL相關知識整理)

找工作時(IT行業),除了常見的軟體開發以外,機器學習崗位也可以當作是一個選擇,不少計算機方向的研究生都會接觸這個,如果你的研究方向是機器學習/資料探勘之類,且又對其非常感興趣的話,可以考慮考慮該崗位,畢竟在機器智慧沒達到人類水平之前,機器學習可以作為一種重要手段,而隨著科技

【詳解】WebSocket相關知識整理

前言   記得大概半年前就產生了疑惑,即後臺如何主動向前端推送資料。問了下專業老師,知道了原來有一個叫WebSocket的技術可以用於推送資料。於是,當時我就找了個教程,用的是Spring WebSocket。照著敲了一遍,也就搭起來了,依葫蘆畫瓢而已。當時有其他東西要學,也沒有相關的需求,就沒再接觸過。前

Java搭建網站相關知識整理(新手上路)

有用的網址: 1、如何用初級的JavaWeb知識寫一個較簡單的網站(一):https://www.2cto.com/kf/201706/644792.html 2、手把手搭建一個完整的javaweb專案(適合新手): https://blog.csdn.net/qq_23994787/art

小波、小波包相關知識整理

1.連續小波變換、離散小波變換、平穩小波變換、尺度 1、連續小波的概念。就是把一個可以稱作小波的函式(從負無窮到正無窮積分為零)在某個尺度下與待處理訊號卷積。改變小波函式的尺度,也就改變了濾波器的帶通範圍,相應每一尺度下的小波係數也就反映了對應通帶的資訊。本質上,連續小波也就是一組可

vmware 相關知識整理

VMware Infrastructure的元件介紹: ESX server :ESX server提供一個虛擬層,將物理主機的處理器,記憶體儲存器以及網路資源以虛擬化方式分配給多臺虛擬機器,此伺服器提供載入程式、管理服務、以及其他管理虛擬機器的服務。 VirtualCenter:一種服務,該服務充當連線至

【作業系統】作業系統大作業&相關知識整理

作業系統大作業&相關知識整理 我校的作業系統大作業為N選3,以下為三個較為簡單的例子的實現 參考程式碼 見連線 1. 銀行櫃員服務問題 程序間同步/互斥問題 通過該實驗熟悉訊號量的處理及其在多執行緒程式中的應用 實驗題目

IP地址、NAT、子網劃分與子網掩碼、CIDR等網路層相關知識整理

 1.  連線在Internet中的每臺主機(或路由器)都分配一個32bit的全球唯一的識別符號,即IP地址。      IP地址的編碼方法有三種:分類的IP地址、子網的劃分和CIDR。      傳統的IP地址是分類的地址,分為A、B、C、D、E五類。無論哪類IP地址,都

jena構建本體,讀取owl檔案,輸出owl檔案相關知識

官方文件是最需要學習的 一種輸出方式: 最後貼上我的程式碼: @Test public void testJena() throws Exception{ //讀取本體 final String SOURCE = "http://ist.sjtu.edu