1. 程式人生 > >Gradle_配置公共global.gradle檔案

Gradle_配置公共global.gradle檔案

Android Studio開發Android工程時,可能一個工程要依賴多個Module,而每個Module裡又有各自單獨的bulid.gradle檔案,每個bulid.gradle都有自己的版本號或者配置規則,如果每個Module的bulid.gradle檔案都要配置,那麼工作就會變得繁瑣,所以本章講解如何通過一個公共的global.gradle檔案,來配置整個專案的bulid.gradle

建立global.gradle檔案

// 用來存放應用中的所有配置變數,統一管理,而不再是每個moudle裡都自己寫一份,修改起來更加的方便
ext {
    // 支援庫版本號
    supportLibraryVersion =
'25.3.1' // Android API 資訊 android = [apkName :'package', // 配置打包後的apk的名稱 compileSdkVersion : 26, //編譯的SDK版本 buildToolsVersion : '26.0.2', // applicationId : 'cn.com.agree.sdk.runtime.dev', //應用Id minSdkVersion :
19, //相容的最低SDK版本 targetSdkVersion : 22, //用於提高指定版本的裝置上程式執行體驗 versionCode : 1, //版本號 versionName : '1.0.0', //版本名 multiDexEnabled : true] //新增多dex分包支援 // 簽名配置 signConfigs = ['storeFile' : '../keystore/release.keystore'
, //簽名檔案uri 'storePassword': '123456', //密匙庫口令 'keyAlias' : 'release-key', //簽名別名 'keyPassword' : '123456'] //簽名口令 // 依賴包管理 dependencies = ['libSupportV7' : 'com.android.support:appcompat-v7:' + supportLibraryVersion, 'libSupportV4' : 'com.android.support:appcompat-v4:' + supportLibraryVersion, 'libSupportMultidex' : 'com.android.support:multidex:1.0.1', 'support_design' : 'com.android.support:design:' + supportLibraryVersion, 'support_annotations' : 'com.android.support:support-annotations:' + supportLibraryVersion, 'libRecyclerview' : 'com.android.support:recyclerview-v7:' + supportLibraryVersion] }

工程根目錄下的bulid.gradle檔案配置

// 引入'global.gradle檔案
apply from: this.file('global.gradle')
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app目錄下的bulid.gradle檔案配置

apply plugin: 'com.android.application'
android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion // 配置編譯SDK版本
    buildToolsVersion rootProject.ext.android.buildToolsVersion // 配置編輯工具版本

    defaultConfig {
        applicationId rootProject.ext.android.applicationId // 配置包名
        minSdkVersion rootProject.ext.android.minSdkVersion // 配置最低SDK版本
        targetSdkVersion rootProject.ext.android.targetSdkVersion //配置目標版本
        versionCode rootProject.ext.android.versionCode // 配置版本號
        versionName rootProject.ext.android.versionName //配置版本名稱
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    signingConfigs {
        debug { //配置debug模式的證書資訊
            keyAlias rootProject.ext.signConfigs.keyAlias
            keyPassword rootProject.ext.signConfigs.keyPassword
            storeFile file(rootProject.ext.signConfigs.storeFile)
            storePassword rootProject.ext.signConfigs.storePassword
        }
        release {  //配置release模式的證書資訊
            keyAlias rootProject.ext.signConfigs.keyAlias
            keyPassword rootProject.ext.signConfigs.keyPassword
            storeFile file(rootProject.ext.signConfigs.storeFile)
            storePassword rootProject.ext.signConfigs.storePassword
        }
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    lintOptions {
        abortOnError false
    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}
// 自定義APK安裝包名
android.applicationVariants.all {
    variant ->
        variant.outputs.all {
            output ->
                def outputFile = output.outputFile
                if (outputFile.name.contains("debug")) {
                    outputFileName = new File("${rootProject.ext.android.apkName}-debug-${rootProject.ext.android.versionName}.apk")
                } else if (outputFile.name.contains("release")) {
                    outputFileName = new File("${rootProject.ext.android.apkName}-release-${rootProject.ext.android.versionName}.apk")
                }
        }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile rootProject.ext.dependencies.libSupportV7
    compile rootProject.ext.dependencies.support_design
    compile rootProject.ext.dependencies.support_multidex
}