使用CocoaPods來做iOS程式的包依賴管理

2021-06-21 03:48:14 字數 3440 閱讀 2946

每種語言發展到乙個階段,就會出現相應的依賴管理工具, 或者是****倉庫。比如

隨著ios開發者的增多,業界也出現了為ios程式提供依賴管理的工具,這個工具叫:cocoapods。

cocoapods是乙個負責管理ios專案中第三方開源**的工具。cocoapods專案的原始碼在github上管理。該專案開始於2023年8月12日,經過一年多的發展,現在已經超過1000次提交,並且持續保持活躍更新。開發ios專案不可避免地要使用第三方開源庫,cocoapods的出現使得我們可以節省設定和更新第三方開源庫的時間。

拿我之前開發的粉筆網iphone客戶端為例,其使用了14個第三方開源庫。在沒有使用cocoapods以前,我需要:

把這些第三方開源庫的相關檔案複製到專案中,或者設定成git的submodule,然後這些開源庫通常需要依賴系統的一些framework,我需要手工地將這些framework一一增加到專案依賴中,比如asi網路庫就需要增加以下framework: cfnetwork, systemconfiguration, mobilecoreservices, coregraphics and zlib。

對於regexkitlite這個正規表示式庫,我還需要設定-licucore的編譯引數

手工管理這些依賴包的更新。

1

2

$ sudo gem install cocoapods

$ pod setup

如果你的gem太老,可能也會有問題,可以嘗試用如下命令公升級gem:

1

sudo gem update --system

另外,ruby的軟體源rubygems.org因為使用的亞馬遜的雲服務,所以被牆了,需要更新一下ruby的源:

1

23

gem sources --remove 

gem sources -a

gem sources -l

使用時需要新建乙個名為podfile的檔案,以如下格式,將依賴的庫名字依次列在檔案中即可

使用cocoapods生成的 .xcworkspace 檔案來開啟工程,而不是以前的 .xcodeproj 檔案。

每次更改了podfile檔案,你需要重新執行一次pod install命令。

你如果不知道cocoapods管理的庫中,是否有你想要的庫,那麼你可以通過pod search命令進行查詢,以下是我用pod search json查詢到的所有可用的庫:

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

3435

3637

3839

4041

4243

44

$ pod search json

-> anyjson (0.0.1)

encode / decode json by any means possible.

- homepage:

- source: .git

- versions: 0.0.1 [master repo]

-> jsonkit (1.5pre)

a very high performance objective-c json library.

- homepage:

- source: git:

- versions: 1.5pre, 1.4 [master repo]

-> mtjsondictionary (0.0.4)

an nsdictionary category for when you're working with it converting to/from json. deprecated, use mtjsonutils

instead.

- homepage:

- source:

- versions: 0.0.4, 0.0.3, 0.0.2 [master repo]

-> mtjsonutils (0.1.0)

an nsobject category for working with json.

- homepage:

- source:

- versions: 0.1.0, 0.0.1 [master repo]

-> sbjson (3.1.1)

this library implements strict json parsing and generation in objective-c.

- homepage:

- source:

- versions: 3.1.1, 3.1, 3.0.4, 2.2.3 [master repo]

-> touchjson (1.0)

touchjson is an objective-c based parser and generator for json encoded data.

- homepage:

- source: .git

- versions: 1.0 [master repo]

1

大概研究了一下cocoapods的原理,它是將所有的依賴庫都放到另乙個名為pods專案中,然後讓主專案依賴pods專案,這樣,原始碼管理工作都從主專案移到了pods專案中。發現的一些技術細節有:

pods專案最終會編譯成乙個名為libpods.a的檔案,主專案只需要依賴這個.a檔案即可。

對於資源檔案,cocoapods提供了乙個名為pods-resources.sh的bash指令碼,該指令碼在每次專案編譯的時候都會執行,將第三方庫的各種資源檔案複製到目標目錄中。

cocoapods通過乙個名為pods.xcconfig的檔案來在編譯時設定所有的依賴和引數

使用xunsearch來做全文檢索

xunsearch是乙個搜尋的工具,可以加快搜尋速度 一般的步驟為 1.在伺服器安裝xunsearch服務,注意如果要給外部伺服器訪問,要在防火牆設定開放8383,8384埠 2.將根目錄的sdk php檔案裡面的所有內容移到你的專案中 4.匯入mysql資料來源到xunsearch中 5.在網頁中...

使用php來做守護程序

起源 linux unix下守護程序 daemon 大家都知道,比如我們常用的httpd mysqld等等,就是常駐記憶體執行的程式,類似於windows下的服務。一般守護程序都是使用c c 來寫,就是通過fork生成子程序,當前臺shell下的父程序被殺掉,子程序就轉到後台執行,為了不在終端產生輸...

MySQL 使用索引掃瞄來做排序

mysql有兩種方式可以生成有序的結果 通過排序操作 或者按照索引順序掃瞄 如果explain 出來的結果的type列的值為 index 則說明mysql使用了索引掃瞄來做排序 不要和extra列的 using index 搞混 掃瞄索引本身是很快的,因為只需要從一條索引記錄移動到緊接著的下一條記錄...