一步一步實現元件化(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等技術實現元件化中的專案訪問。