1. 程式人生 > >Android元件化探索

Android元件化探索

文章目錄

元件化的優勢

元件化簡單的說就是:能任意使用專案中的module來合併一個app.
實際開發中,遇到業務很複雜,且業務線較多時,我們往往會將專案模組化。但是有時候僅僅模組化,依然解決不了更深城的需求,舉個栗子來說下:
剛進專案組時,我們開發的專案,主要包含IM、朋友圈和豬行業(養殖、買賣)的一個app.後來業務擴充套件,我司行業也在變多,有了漁、田、驢、狐狸、蛋、企、柑橘…有些行業公司組織分公司運營,有些行業外包,這時就衍生出一堆app了,如果不考慮元件化,想想都頭大…

元件化的步驟

1.建立config.gradle,在專案下的build.gradle中引入

apply from: "config.gradle"

config.gradle簡單程式碼

ext {
    //版本統一配置
    compileSdkVersion = 27
    minSdkVersion = 17
    targetSdkVersion = 27
    supportVersion = '27.1.1'

    //my_view是否為module
    myViewIsModule = true
}

2.module中根據引數myViewIsModule 的值,配置為application或者library.注意統一繼承baseLib,有共性的庫都放在baseLib中引用。
如果module作為application,我們需要額外配置一個清單檔案和application。在module的bulid.gradle中區分引用不同的清單檔案。這裡我們把作為module時,建立的清單檔案放在main下的module檔案中。
在這裡插入圖片描述

3.不同module之間Activity跳轉傳參,通過ARouter操作。Android中預設不同module間頁面不可跳轉,藉助阿里的路由框架,可以完成任意跳轉。

4.在app的build.gradle 中配置需要整合的module.

    if (Boolean.valueOf(rootProject.ext.myViewIsModule)) {
        implementation project(':review_my_view')
    }

每個module配置一個引數,這樣就可以自由打包module了。

元件化的注意事項

1.config.gradle中配置的引數,每次修改後需要同步,方可生效。

2 資原始檔的衝突。類名、xml、drawable等名稱都不可重複,建議不同module下資源,加上module名作為字首。

3.baseLib中配置共性的混淆檔案,每個module的proguard-rules.pro中配置對應自己的混淆內容,整合打包時會自動合併。

4.許可權。baseLib中配置常見的許可權,每個module在自己的兩個清單檔案中,對應配置,不要遺漏。

程式碼地址