Android一我的的組件化:組件隔離,模塊調試

一我的的組件化

組件化開發能夠提升團隊長期效率,即便只有一我的。android

組件隔離,模塊調試

承上 【掘金】Android組件化模塊化在移動應用開發中 (序)app

去限制每一個library只依賴框架代碼併爲其添加統一的調試外殼代碼,而不是變身app,浪費轉換時間,也不須要寫兩份清單文件。框架

在此以前簡單熟悉一下Gradle能使你的項目構建更快;模塊化

Gradle項目的構建分爲三個階段:初始化、配置、執行。在調試時,只去加載須要調試或聯合調試的 Module 這樣去提升一點構建速度。組件化

settings.gradle

Gradle在初始化階段會首先去查找setting.gradle文件,查找的規則以下:post

  1. 查找當前構建目錄下的setting.gradle文件。
  2. 若是沒有找到,則去與當前目錄有相同嵌套級別的master目錄查找。
  3. 若是沒有找到,則去父目錄查找。
  4. 若是沒有找到,則進行單項目構建。
  5. 若是找到了,Gradle去檢查當前項目在settings.gradle中是否有定義。若是沒有,則進行單項目構建,不然進行多項目構建。

多項目工程在根目錄必須存在setting.gradle文件,單項目工程則能夠不須要這個文件。gradle

咱們在這個文件內去配置須要調試開發的Libraryui

include ':app'
//必要的
include ':必要的xxx'
//殼app 要加載的Library
gradle.ext.isAppMap =
        [/** -1 剔除; 0 libaray; 1 APP*/
         ':佔位' : -2,
         ':libraryA': 0,
         ':libraryB': -1,
        ]
gradle.ext.isDebug = true
gradle.ext.debugModelApp = false
for (String libraryName : gradle.ext.isAppMap.keySet()) {
	if... 決定是否要加載libaray
}
複製代碼

app的build.gradlelua

...
dependencies {
	...
    for (String modelName : gradle.ext.isAppMap.keySet()) {
        if (gradle.ext.isDebug) {
            if (gradle.ext.isAppMap.get(modelName) == 0) {
                implementation project(modelName)
            }
        } else {
            implementation project(modelName)
        }
    }
}
複製代碼

每一個library的build.gradlespa

switch (rootProject.getLoadType(getName())) {
    case -1:
        return
    case 0:
        apply plugin: 'com.android.library'
        break
}
複製代碼

新建config.gradle

ext {
    android = [
            compileSdkVersion : 29,
        	......
    ]
}
def config = rootProject.ext.android
//相關庫依賴
subprojects {
    afterEvaluate { mProject ->
        if (mProject.hasProperty('android')) {
            android {
                compileSdkVersion config.compileSdkVersion
        		......
                defaultConfig {
                    if (mProject.getName().equals('app')) {
                        applicationId "applicationId"
                    }
                    minSdkVersion config.minSdkVersion
                    targetSdkVersion config.targetSdkVersion
                }
            }
        }
        dependencies {
        }
    }
}
複製代碼

在根項目build.gradle

apply from: "config.gradle"
複製代碼

這樣,新建一個Module 基本不須要配置其餘,就能夠在該Modulen內去實現代碼,不一樣library頁面跳轉使用ARouter等。

... 未完待續...

相關文章
相關標籤/搜索