podspec中spec的全稱是「specification」,說明書的意思。顧名思義,這是用來描述你這個私有pod的說明資訊的。
podspec是cocoapods的一種檔案格式,有一套自己的語法,我們可以到cocoapods官網進行詳細了解(
建立podspec很簡單,只要建立乙個以.podspec為字尾的檔案即可,或者直接拷貝別人的進行修改也可以。
它的建立命令是:$pod spec create testfile
podspec檔案的常用配置字段介紹
pod::spec.new do|s|
框架名字:框架名字一定要寫對,pod search "框架名"就是搜的這個
s.name = "gedeyproject"
框架版本號
s.version = "1.0.0"
框架簡介
s.summary = "geddy框架"
框架的主頁
s.homepage = ""
框架遵守的開源協議
s.license = 'mit'
框架的作者
框架的資源路徑:路徑可以指向遠端**庫,也可以指向本地專案,例如:
1.指向遠端**庫:
2.指向本地專案:
s.source =
框架被其他工程引入時,會匯入***x目錄下的.h和.m檔案
s.source_files = '***x/**/*.'
框架被其他工程引入時,會匯入geddy/resource目錄下的資源檔案
s.resources=
框架依賴的framework
s.framework = 'coredata'
框架依賴的其他第三方庫
s.dependency 'magicalrecord', :git => '', :tag => 'sumigriddiary2.1'
s.dependency 'mbprogresshud'
框架是否需要支援arc
s.requires_arc = true
框架支援的最低平台版本
s.platform = :ios,
'7.0'
框架公開的標頭檔案
s.public_header_files = '
geddy/**/*.h'
end大型專案模組化管理
模組化有幾個方式:
1. 目錄結構管理:這是最原始的方式,僅僅通過目錄結構實現**層次的清晰化。但本質上並沒有解決**之間的依賴混亂的情況,模組化劃分也非常不清晰。
2. 子工程:通過子工程可以實現**依賴管理和模組化,但是需要引入複雜的設定,不利於管理。
3. 靜態庫:將依賴**打包成為靜態庫.a,不過由於不能看到原始碼,除錯不方便。
自從有了cocoapods,可以使用它來管理私有庫,從而實現了**模組化管理。例如下圖所示:
例如在github上面建立乙個空的git庫:
將這個git庫加入到cocoapods庫的列表中:
pod repo add myspecs [email protected]:***
/myspecs
.git
此時可以檢查下本地的pod repo
>$ pod repo list
myspecs
- type: git (master)- url: [email protected]:***/myspecs.git
- path: /users/***/.cocoapods/repos/myspecs
master
- type: git (master)
- url: [email protected]:cocoapods/specs.git
- path: /users/***/.cocoapods/repos/master確定私有庫的specs已經加到本地pod repo中。
在私有庫專案中的根目錄,建立對應的podspec檔案,裡面會描述這個庫的基本資訊。
podspec規範可以檢視:
pod::spec.
new
do
|s|
s.name =
"podname"
s.version =
"0.0.1"
s.summary =
"a short description of podname."
s.homepage =
""
s.license =
s.author =
s.source =
s.source_files =
"**/*."
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裡面的**都會平鋪在根目錄裡面
如果需要增加目錄層次結構,則需要使用subspec,詳細使用規範:#subspec
注意:subspecs之間不能存在相互依賴關係,只能單向依賴
pod lib lint --sources=
'[email protected]:***/myspecs.git'
--verbose --use-libraries --allow-warnings
sources引數可以指定私有庫的pod specs庫的位址。如果能夠通過,說明**編譯沒有問題
git tag -m
"first release"
"0.0.1"
$ git push --tags
#推送tag到遠端倉庫
pod repo push myspecs podname.podspec --sources=
'[email protected]:***/myspecs.git'
--use-libraries --allow-warnings
這樣就完成了乙個cocoapods的私有庫的提交了,別人就可以在podfile裡面使用這個私有庫了
XMPP 相關知識整理
xmpp the extensible messaging and presence protocol 中文全稱 可擴充套件通訊和表示協議 簡介 可擴充套件通訊和表示協議 xmpp 可用於服務類實時通訊 表示和需求響應服務中的xml資料元流式傳輸。xmpp以jabber協議為基礎,而jabber是即...
patch,diff相關知識整理
diff 命令列選項 原始檔案 新檔案 幾個常用的選項說明 diff的內容預設輸出到stdout上,所以需要把它重定向到乙個檔案中才能儲存,如下 diff un test0 test1 test1.patch如果是資料夾就加個r 常用 rnu就行 patch 命令列選項 待打補丁的檔案或文件 補丁檔...
變數相關知識整理
何為變數?簡而言之就是儲存資料值的容器,js所有變數都擁有唯一識別符號,即我們通常說的變數名。關於變數,我們通常有兩個操作,宣告和賦值 函式作用域 塊級作用域 當某個變數被訪問時通常會經過以下步驟 判斷當前位置是否存在區域性作用域 即函式作用域和塊級作用域 存在區域性作用域,則判斷該區域性作用域內是...