天天看點

知識點-----元件化、子產品化

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

繼續閱讀