Android studio gradle 通用配置简单介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zp0119/article/details/79151922

前言

Gradle 是一种依赖管理工具,基于 groovy 语言。studio 是通过 Gradle 来构建项目的,

注:以下代码非运行状态,只是对常用代码做介绍;注释比较详细,不做过多的内容介绍

一、project 根目录下的 build.gradle

buildscript {

    /**
     * repositories 声明代码托管仓库 jcenter()、mavenCentral()
     * 代码托管仓库 - 托管了很多Android开源项目,配置后方便在项目中引用开源项目
     */
    repositories {
        jcenter()
    }

    /**
     * 声明一个Gradle插件,Gradle 应用版本
     */
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
    }
}

allprojects {
    repositories {
        // 1、下载速度快;2、最大的Java仓库;3、操作简单;
        jcenter()
        // 上传不友好,上传函数库不太方便
        mavenCentral()
    }
}

// 执行清理任务
task clean(type: Delete) {
    delete rootProject.buildDir
}

二、module 中 build.gradle

// 该模块为应用程序模块,可以直接运行
apply plugin: 'com.android.application'
// 该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。
apply plugin: 'com.android.library'

// android 配置项目构建的各种属性
android {
    // 指定项目的SDK编译版本
    compileSdkVersion 26
    // 指定项目构建工具的版本
    buildToolsVersion "26.0.0"
    // defaultConfig 配置更多细节
    defaultConfig {
        // 指定项目的包名
        applicationId "com.example.zpdemo"
        // 指定项目最低兼容的版本
        minSdkVersion 15
        // 指定的值表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,
        // Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效
        targetSdkVersion 25
        // 版本号
        versionCode 1
        // 版本名称
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        // 默认是umeng的渠道
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]

        //解决方法数量超过65535的问题,即64k问题
        multiDexEnabled true
        // multiDex 混淆
        multiDexKeepProguard file('multiDexKeep.pro')

        // JNI 引用
        ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

        // Java 编译版本为1.8的话,另外在 defaultConfig 里要配置 Jack 编译器
        jackOptions {
            enabled true
        }
    }

    // java JDK版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }

    // 多渠道信息配置
    productFlavors {
        xiaomi {}
        googleplay {}
        wandoujia {}
    }

    // buildTypes 指定生成安装文件的主要配置
    buildTypes {
        // debug 指定生成测试版安装文件的配置,可以忽略不写
        debug {
            // 是否对代码进行混淆
            minifyEnabled false
            // 是否清理无用资源,依赖于minifyEnabled
            shrinkResources true
            // 是否启用zipAlign压缩
            zipAlignEnabled true
            // 是否debug
            debuggable false
            // 命名后缀
            versionNameSuffix "_release"
            // 签名
            signingConfig signingConfigs.release
            // 指定混淆的规则文件 这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件
            // proguard-android.txt 为默认的混淆文件,里面定义了一些通用的混淆规则
            // proguard-rules.pro 可以在该文件中定义一些项目特有的混淆规则
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        // release 指定生成正式版安装文件的配置
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // lintOptions 移除lint检查的error
    lintOptions {
        abortOnError false
    }

    // 通过修改SourceSets中的属性,可以指定哪些源文件(或文件夹下的源文件)要被编译,哪些源文件要被排除
    sourceSets {
        /**
         * 展示了一个空的sourceSets,它任然可以很好地工作,因为它对每一项属性都有一个默认值。如果使用默认的值的话,
         * 在build.gradle中是没有必要再配置一遍的。为了让自己的工程更加有特色一点,你可以修改他们中的任何一项。
         */
        main {

        }
    }

    // 签名配置
    signingConfigs {
        release {
            // 密钥文件路径
            storeFile file("D:/Android/test.jks")
            // 密钥密码
            storePassword "123456"
            // 密钥别名
            keyAlias "Test"
            // 密钥别名密码
            keyPassword "123456"
        }
        debug {
        }
    }
}

/**
 * 项目的依赖关系 本地依赖、库依赖和远程依赖
 * 1、本地依赖:是对本地的jar包或目录添加依赖关系
 * 2、库依赖:对项目中的库模块添加依赖关系
 * 3、远程依赖:对jcener库上的开源项目添加依赖关系
 *
 * 远程依赖包含三部分:GROUP_ID:ARTIFACT_ID:VERSION
 * GROUP_ID:标识函数库所属组织,命名方式:greenrobot-精确到组织名;squareup-精确到函数库名;
 * ARTIFACT_ID:标识函数库名字;
 * VERSION:标识函数库版本;
 */
dependencies {
    // 本地依赖
    compile files('libs/MeiZu_Fingerprint.jar')
    // 库依赖
    compile project(':zplibrary')
    // 远程依赖
    compile 'com.android.support:appcompat-v7:26.+'
}

猜你喜欢

转载自blog.csdn.net/zp0119/article/details/79151922