前文已經介紹了模塊化的流程及一些常見的問題,咱們在這裏再次總結一下。git
在工做中,當咱們開始一個新項目的時候,最早考慮的就是模塊化工做。github
模塊化工做的想法是很美好的,但是執行過程當中會遇到不少的問題,而這些問題可能會讓咱們在工做中舉步維艱。shell
工具使用問題。iOS的模塊化通常會使用cocoapods工具,這個工具很強大,內容也很豐富,咱們想要完成模塊化工做,須要創建私有庫,編寫podspec文件,處理資源,編寫Podfile文件,創建本地依賴等等。讓團隊成員每一個人都精通這個工具是沒必要要的。所以常常會在使用工具中遇到不易解決的問題,從而浪費大量的時間。swift
xcode設置問題。xcode設置項多如牛毛,不少內容看起來並不直觀,須要咱們去查閱官方文檔來解決。並且這些設置數量多,使用的頻率又少,因此不免會出現這樣的狀況:每一個人都遇到的問題,而後各自去花時間解決,而後過段時間遇到相同的問題經常就忘記了,還要花時間去查閱解決,形成資源的重複浪費。xcode
模塊間依賴的問題,當你依賴的也是私有庫的其餘模塊(下文中稱爲自有模塊)
時,開發中可能要同時修改多個模塊,這樣就會出如今多個工程中切換的問題。bash
規範問題,每一個人創建模塊的方式可能都不一樣,包括工程結構,工程設置等等。這樣一來,不一樣的模塊可能差別特別大,當跨模塊開發或者代碼交接的時候,可能就會出現難以解決的問題。服務器
設置的變動修改都是手動修改,有時候不免會由於疏忽,而致使難以發現的錯誤,當須要處理的模塊和依賴較多時,發生錯誤的機率也會增長。app
爲了解決這些問題,讓團隊可以將精力所有集中到業務開發中,特使用bash shell開發一個構建工具,用於自動化處理模塊化的過程當中遇到的設置及工具使用問題。模塊化
工具的地址以下:github.com/hardman/AWM…工具
使用這個自動化工具你將會得到以下能力:
所以,使用這個自動化工具,你不須要了解cocoapods工具,也不須要處理任何工程和工具設置,能夠將注意力都集中到業務開發中。
【注】工具使用靜態庫做爲模塊的輸出文件。
tools/config
修改配置文件
git@
開頭。這個git庫用於保存全部自有模塊名稱及地址。git@
開頭。這個git庫就是你的私有庫地址。pod repos
,通常狀況下保持默認便可,支持多行,每行保存一個地址./create.sh -n=[模塊名] -b=[bundle id] -t=[s|f|r]
便可建立工程
工程根目錄/modules
。./create.sh -n=HelloWorld -b=com.helloworld -t=s
./push.sh [模塊名] [tag]
./push.sh HelloWorld 0.0.1
./pull.sh [模塊名]
便可下載其餘未同步到本地的自有模塊
./pull.sh HelloWorld
有的時候,當前模塊所依賴的模塊版本升級了,須要修改當前模塊的依賴文件。 有2種方法:
dependency.txt
文件,文件內記錄了當前模塊依賴的自有模塊
。dependency.txt
文件記錄模塊版本的格式是:每行一個模塊;格式爲:模塊名@@版本號
,版本號支持~>
前綴,不可帶空格模塊名.podspec
文件podspec
文件要求的格式去修改版本號./utils.sh [模塊名] upgradedependency [依賴的模塊名] [版本號]
./utils.sh LoginModule upgradedependency AFNetworking 3.5.0
./utils.sh LoginModule upgradedependency AFNetworking
#import "模塊名/模塊名-Swift.h"
。#import "TestOC.h"
。xcode - build phases - [模塊名].h
文件必須在public區域(.xcassets, .xib, .png, .jpg, .jpeg, .gif, .txt, .plist, .bundle, .zip, .car)
都是放到: "模塊名.bundle"
文件中的,而這個bundle在main bundle
的根目錄(這也是要求模塊名防止重名的緣由之一)UIImage.init(named: name, in: bundle, compatibleWith: nil)
方法UIImage.init(named:String)
這種方法,即便是在模塊工程內部的代碼也不行./utils.sh [模塊名] upgradedependency [依賴的模塊名] [版本號]
命令修改模塊所依賴的模塊的版本號--完--