1概念
1.1組件化
就是"基礎庫"或者“基礎組件",意思是把代碼重複的部分提煉出一個個組件供給功能使用。
使用:Dialog,各種自定義的UI控件、能在項目或者不同項目重複應用的代碼等等。
目的:複用,解耦。
依賴:組件之間低依賴,比較獨立。
架構定位:縱向分層(位於架構底層,被其他層所依賴)。
1.2模塊化
就是"業務框架"或者“業務模塊",也可以理解爲“框架”,意思是把功能進行劃分,將同一類型的代碼整合在一起,所以模塊的功能相對複雜,但都同屬於一個業務。
使用:按照項目功能需求劃分成不同類型的業務框架(例如:註冊、登錄、外賣、直播.....)
目的:隔離/封裝 (高內聚)。
依賴:模塊之間有依賴的關係,可通過路由器進行模塊之間的耦合問題。
架構定位:橫向分塊(位於架構業務框架層)。
1.3總結
其實組件相當於庫,把一些能在項目裏或者不同類型項目中可複用的代碼進行工具性的封裝。 而模塊相應於業務邏輯模塊,把同一類型項目裏的功能邏輯進行進行需求性的封裝。
2步驟
2.1新建module
具體步驟:new -> module -> Android Library -> 設置包名
設置包名的時候注意要在app模塊的包名後追加。比如app模塊的清單文件裏包名是bai.bai.bai.demo,那麼新建的demo(如baseModule)包名要是bai.bai.bai.demo.baseModule。如下圖是已經建好的module。
2.2 baseModule模塊填充數據
2.2.1、新建module後,在項目的settings.gradle文件裏已經自動添加的baseModule爲參加編譯的模塊(如下圖),且只有包名沒有默認的類,此時需要自己新建類,註冊在本module的清單文件裏註冊。
2.2.2、保證baseModule的gradle裏各種版本要與app模塊的配置一樣,否則會報錯。
2.3 app模塊設置
在app模塊的gradle裏添加依賴:dependencies {}裏添加 implementation project(':baseModule')並重新編譯sync,否則引用不到baseModule模塊裏的類。
2.4 單獨運行Module
2.4.1 如果要單獨運行某個module,在setting.gradle把多餘模塊去掉,但是要保證該模塊所依賴的module不可去掉,否則報錯。
2.4.2 在該module下找個入口activity,把註冊放到app模塊下,並設置爲launcher入口
2.4.3 單獨運行的話,是引用不到沒有參與編譯的模塊裏的類的,比如單獨運行A模塊,點擊A模塊的一個按鈕跳轉到B模塊的一個界面,此時會報錯,因爲會找不到類。所以此時要判斷要跳轉的界面是否能找到。針對於這個問題有個插件ARouter,這個是通過字符串找activity的,如果找不到會返回找不到,但是不會奔潰。
2.5 ARouter
2.5.1 添加依賴:kapt 'com.alibaba:arouter-compiler:1.1.4'
2.5.2 在有跳轉邏輯的activity上添加註解Route
2.5.3 跳轉界面:可以帶參數,也可以不帶
參考:https://www.jianshu.com/p/cac0beae8876