1. 程式人生 > 其它 >Android之Gradle的使用

Android之Gradle的使用

Gradle的使用

Android的版本統一管理

  • 1.新建檔案config.gradle,並配置相關屬性
  • 2.在專案的build.gradle中引入apply from : 'config.gradle'
  • 3.App的build.gradle中通過呼叫this.rootProject呼叫配置的屬性
    舉個例子
ext {
    // 抽取出公共項,定義key-value map
    app_android = [
            compileSdkVersion : 30,
            buildToolsVersion  : "30.0.3",
            minSdkVersion : 23,
            targetSdkVersion : 30,
    ]

    // 依賴相關的內容
    app_impl = [
            "appcompat": 'androidx.appcompat:appcompat:1.2.0',
            "material": 'com.google.android.material:material:1.3.0',
            "junit": 'junit:junit:4.13.2',
            "androidx_junit": 'androidx.test.ext:junit:1.1.2',
            "androidx_espresso": 'androidx.test.espresso:espresso-core:3.3.0'
    ]

    // 編譯相關的內容
    app_compile = [
            sourceCompatibility: JavaVersion.VERSION_1_8,
            targetCompatibility: JavaVersion.VERSION_1_8,
    ]

    // debug/release模式下的server_url
    app_server_url = [
            "debug": "http://test.xxx.com/xxx",
            "release": "http://product.xxx.com/xxx"
    ]
}
app的build.gradle中
android {
    compileSdkVersion this.rootProject.app_android.compileSdkVersion
    buildToolsVersion app_android.buildToolsVersion

    defaultConfig {
        applicationId "com.tal.learn_gradle"
        minSdkVersion app_android.minSdkVersion
        targetSdkVersion app_android.targetSdkVersion
        versionCode 1
        versionName '1.0'
        testInstrumentationRunner app_android.testInstrumentationRunner
    }

    buildTypes {
        debug {
            // 測試環境用debug_url
            buildConfigField("String", "SERVER_URL", "\"${app_server_url.debug}\"")
        }
        release {
            // 正式環境用release_url
            buildConfigField("String", "SERVER_URL", "\"${app_server_url.release}\"")

            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility app_compile.sourceCompatibility
        targetCompatibility app_compile.targetCompatibility
    }
}

dependencies {
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    // 更簡化依賴庫的方式
    app_impl.each {
        k, v -> implementation v
    }
}

編譯產生的BuildConfig中可以進行根據打包型別更改SERVER_URL