一步一步實現組件化(1)

先放上項目地址:GitHub - iblue007/SmartRouter: 一步步搭建組件化框架

大家會看組件化的東西,想必也知道組件化的優勢了吧 ,這裏就不在贅述。

想要寫組件化,首先我們要構建一個組件化的結構,

就比如組件和插件可以獨立運行起來這個要怎麼弄呢,我們先來個簡單的變量控制來實現(後面的博文會有其他的實現方法介紹)

這個版本先通過配置自定義的參數,也就是開關來控制組件和主項目之間的切換,開起來的時候是組件化裏面的插件,關閉的時候就是一個獨立的app,開關如下所示:

 

gradle可以添加額外的自定義屬性,通過ext屬性實現。先新建一個config.gradle文件,並自定義isRelease屬性,用於動態切換:組件化模式/集成化模式

 

那麼這個config文件怎麼使用呢?需要在項目的根build.gradle文件通過 apply from 方式引用config.gradle文件

 

 

然後我們要做一些判斷(demo中有兩個模塊一個是app,一個是my)

1.如果是組件化的情況下,主項目app裏面是要引用my這麼模塊的,如果不是組件化的情況下是不引用my模塊

 

2.同理,在my模塊中,當my模塊是組件的模塊的情況下,my模塊不能有包名applicationId,build.gradle應該引用com.android.library,當my是獨立app模塊的時候,應該引用獨立的一個minifest.xml文件,build.gradle應該引用com.android.application

 

至此就能實現一個最基本的組件化工程了,大家想看這個部分的代碼的話,可以通過github的日誌,定位到如下的這個日誌週期,就可以看到這個最基礎的組件化看成的代碼了。

 

如果喜歡的,麻煩大家給個贊,謝謝

下一篇,我們來講點乾貨,通過註解、auto_service、javapoet等技術實現組件化中的項目訪問。