前言

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.+'

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐