Android studio gradle 通用配置简单介绍

前言

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

特别注意:

  • 在library中的build.gradle,buildTypes 默认不执行debug模式,所以在debug模式中的相关配置是不起作用的。
  • debug与release两种构建类型,主要区别是能否在设备上调试、以及签名不一样,其他代码和文件资源都一样。
  • applicationIdSuffix是buildType的一个属性,用于配置基于默认applicationId的后缀。
// 该模块为应用程序模块,可以直接运行  
apply plugin: 'com.android.application'  
// 该模块为库模块,只能作为代码库依附于别的应用程序模块来运行。  
apply plugin: 'com.android.library'  
  
// android 配置项目构建的各种属性  
android {  
    // 指定项目的SDK编译版本  
    compileSdkVersion 26  
    // 指定项目构建工具的版本  
    buildToolsVersion "26.0.0"  
    // defaultConfig 配置更多细节  
    defaultConfig {  
        // 指定项目的包名 ,从manifest中读取 
        applicationId "com.example.zpdemo"  
        // 指定项目最低兼容的版本  
        minSdkVersion 15  
        // 指定的值表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,  
        // Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,才会生效  
        targetSdkVersion 25  
        // App 内部版本号,是一个整数值,主要用于版本升级
        versionCode 1  
        // 版本名称  
        versionName "1.0"  
        // 配置测试App的包名,默认情况是application + “.test”
        textApplicationId "com.zpan.demo.test"
        // 配置单元测试时使用的Runner,默认使用的是InstrumentationTestRunner,如果想使用自定义的Rnnuer,修改这个值就行
        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  
            // 配置是否生成一个可供调试的apk 
            debuggable false  
            // 和debuggable类似,配置是否生成一个可供调试Jni代码的apk
            jniDebuggable true
            // 命名后缀  
            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'  

            // 配置Proguard混淆使用的配置文件,混淆单个文件,可多次配置
             proguardFile getDefaultProguardFile('proguard-android.txt')
        }  
        // 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"  
           // 签名证书类型
            storeType “”
            // 签名证书密钥别名  
            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.+'  
} 

你可能感兴趣的:(Android studio gradle 通用配置简单介绍)