一、新建工程整體目錄結構預覽
我的項目一般的目錄結構,見下圖:
二、 獨立的邏輯模塊工程的建立
如上圖,可以發現,在主工程XLLIMChat下,還有一個XLLDragCollection工程。XLLDragCollection工程實際上就是主工程里的一個功能模塊。這里類似于模塊化的思想,將一個獨立的模塊單獨在一個工程中展現,方便其他項目直接使用。建立模塊工程步驟如下:
- 新建一個Project,選擇Cocoa Touch Static Library。
2.新建模塊工程
- 新建一個Project,選擇Cocoa Touch Static Library。
- 設置模塊工程主target下的Build Settings -> Code Signing Identity為Don’t Code Sign。
3.設置code signing
- 設置模塊工程主target下的Build Settings -> Code Signing Identity為Don’t Code Sign。
-
Build Phases -> Copy Files下,清空Subpath,并刪掉引入的.h文件。
4.設置copy Files
-
Build Phases -> Copy Files下,清空Subpath,并刪掉引入的.h文件。
- 關閉模塊工程,打開主工程,將模塊工程的.xcodeproj文件拖到指定位置。
- 設置工程依賴,如下圖:
上面是為了在編譯主工程的時候,同時編譯模塊工程。下面是為了引入模塊工程類。
5.添加工程之間的依賴
- 設置工程依賴,如下圖:
- 設置頭文件路徑,如下圖:
因為模塊工程與主工程目錄在同一級,所以使用../即可,并設置為recursive狀態
6.設置模塊工程頭文件路徑
- 設置頭文件路徑,如下圖:
需要注意一點的是,模塊工程要保持完全的獨立,以上設置完成后,在主工程就可以使用模塊工程的相關類了。
三、配置PCH文件路徑
在目錄結構圖
的Macro里有一個Public目錄,存放著項目全局的宏,常量,方法等。具體內容如下圖:
PCH文件里實現了全局類的聲明,方便項目中的其他類直接調用全局類、全局宏等。
項目主target -> Build Setting -> Prefix Header設置PCH文件路徑。如下圖是本工程的pch文件路徑設置:
四、自定義Supporting Files目錄
貌似是Xcode9.0之后,系統不生成Supporting Files目錄了,對于強迫癥患者來說,面對系統生成的一些文件如info.plist,還是想單獨放在一個目錄里。所以自己手動創建一個Supporting Files目錄。
這里要注意的是,如果你自己創建目錄的時候,有下面兩種樣式:
區別如下:
- 如果選用New Group without Folder系統并不會真的生成一個文件夾。
- 如果選用New Group系統會生成一個文件夾來存儲此目錄下的文件。此時需要重新設置info.plist文件的路徑,因為info.plist文件路徑默認直接是在主工程目錄下的。設置方法如下圖:
10.重新設置info.plist文件路徑
五、多target管理工程
項目開發中,我們一定會需要多個版本。如開發版本,測試版本等。之前一直都是使用很low的if else進行判斷。這種方式很low,也很傻。因為到項目上線的時候,為了保險起見,還需要將這些代碼刪掉。這很可能會造成bug。使用多個target來處理這個問題才是正確的操作。步驟如下:
- 在主工程target下右鍵,選擇Duplicate復制一個配置完全一樣的target。
11.復制主target - 更改target名稱
- 雙擊當前target至編輯模式,更改名稱。
- Manager Schemes下找到對應target,雙擊至編輯模式,更改名稱。
- 更改新target下的info.plist路徑。
- 設置全局target宏
在新的target下 -> Build Setting -> Preprocessor Macros。雙擊進行編輯。
12.修改工程配置文件
在兩個target共用的同一份代碼里,使用以下方式就可以區分是開發版本target還是上線版本的target了。
13.不同target的代碼區分
六、配置本地pod,實現簡單組件化
如果你的獨立模塊比較大,而且使用到了一些三方庫。這時候建議使用使用本地Pod進行管理。步驟如下:
-
將pod工程放在與主工程目錄同級處。
14.放置pod工程 - 配置podsepc文件
與遠程pod不同的一點是,這里要額外設置一個
s.ios.deployment_target = "8.0"
。并且可以在此文件里設置對三方庫的依賴。
為了方便修改podSpec文件,可以將此文件放入xcode中的一個without folder的Group中。
15.podspec文件所在位置 -
修改podfile文件,并update即可。
16.修改podfile -
本地pod工程文件所在位置。
17.本地pod工程文件位置
七、添加自動化打包腳本target
使用腳本語言,Xcode在編譯的時候,就可以進行生成ipa包并上傳至蒲公英了。極大地節省了項目開發時間。
- 新建一個Aggregate target
18.Aggregate target - 在新target下 -> Build Phases -> 添加一個Run Script。并將腳本復制到指定區域即可。
19.添加打包腳本 - 需要打包的時候,Sheme切換此target下,Command + B編譯直接進行打包并上傳。
- 打包腳本如下,此腳本參考朱鍋鍋的文章神氣的iOS打包
#構建 .xcarchive文件
xcodebuild archive -workspace EUCSDK_Sample.xcworkspace -scheme EUCSDK_Sample -configuration Release -archivePath EUCSDK_Sample.xcarchive
#通過 .xcarchive文件導出.ipa包
xcodebuild -exportArchive -archivePath EUCSDK_Sample.xcarchive -exportPath EUCSDK_Sample.ipa -exportOptionsPlist ExportOptions.plist
#將 .ipa的包上傳至蒲公英平臺
curl -F "file=@EUCSDK_Sample.ipa/EUCSDK_Sample.ipa" \
-F "uKey=略(在你的蒲公英賬號下獲取)" \
-F "_api_key=略(在你的蒲公英賬號下獲取)" \
-F "updateDescription=更新內容" \
https://www.pgyer.com/apiv1/app/upload
八、總結
以上就是我總結的iOS項目基礎工程的完美搭建。看完希望能夠對你有所幫助。有疑問的小伙伴歡迎下方issue。沒疑問的小伙伴給個愛心??。