Android build.gradle详解

admin | 女足世界杯预测

1.build.gradle位置

通常Android项目都至少会有两个build.gradle,一个是在app目录下得,另一个则是在整个项目的目录下。如下图所示

build.gradle目录位置

2.整个目录下的build.gradle

buildscript {

ext.kotlin_version = "1.4.32"

repositories {

google()

jcenter()

}

dependencies {

classpath "com.android.tools.build:gradle:4.1.3"

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

// NOTE: Do not place your application dependencies here; they belong

// in the individual module build.gradle files

}

}

allprojects {

repositories {

google()

jcenter()

}

}

ext.kotlin_version 表示是当前使用kotlin插件的版本号

repositories 可以声明google(),jcenter()的依赖库,可以自行添加别的依赖库的maven仓地址

dependencies 声明了gradle和kotlin两个插件

3.app目录下build.gradle

plugins {

id 'com.android.application'

id 'kotlin-android'

id 'kotlin-android-extensions'

}

android {

compileSdkVersion 30

buildToolsVersion "30.0.3"

defaultConfig {

applicationId "com.plusplus.learnkotlin"

minSdkVersion 22

targetSdkVersion 30

versionCode 1

versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

compileOptions {

sourceCompatibility JavaVersion.VERSION_1_8

targetCompatibility JavaVersion.VERSION_1_8

}

kotlinOptions {

jvmTarget = '1.8'

}

}

dependencies {

implementation fileTree(dir: 'libs', include:['*.jar','*.aar'])

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

implementation 'androidx.core:core-ktx:1.2.0'

implementation 'androidx.appcompat:appcompat:1.1.0'

implementation 'com.google.android.material:material:1.1.0'

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

testImplementation 'junit:junit:4.+'

androidTestImplementation 'androidx.test.ext:junit:1.1.1'

androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

}

3.1 plugins

com.android.application表示当前是一个应用程序的模块,可以独立运行;另外一种就是com.android.library,表示当前是一个库模块,只能依赖别的应用程序模块运行。

kotlin-android使用kotlin语言开发Android项目必须用到的

kotlin-android-extensions对kotlin语言的一些功能扩展,比如activity中直接引入布局文件中控件的id

3.2 android

compileSdkVersion 指项目编译的SDK版本

buildToolsVersion 项目构建工具的版本

3.2.1 defaultConfig

applicationId:应用的唯一标识附

minSdkVersion:项目运行时最低兼容的Android版本

targetSdkVersion:项目在当前版本做了充分测试,可以兼容当前版本的新的特性,比如版本号改成23就需要做Android6.0以上的权限的动态申请,改成22则不需要。

versionCode:版本号

versionName:版本名

testInstrumentationRunner:JUnit测试使用

3.2.2 buildTypes

debug:生成测试版安装文件的配置

release:生成正式版安装文件的配置,minifyEnabled项目代码是否混淆,true表示混淆,false表示不混淆。proguardFiles中有两个文件,第一个表示所有项目通用的混淆规则,第二个文件表示当前项目特有的混淆规则

3.2.3 compileOptions

sourceCompatibility:指定编译 .java文件的jdk版本

targetCompatibility:指的是运行时jdk的环境

3.2.4 kotlinOptions

jvmTarget: kotlin语音编译的时候使用jdk1.8的版本特性

3.3 dependencies

指定当前项目得依赖关系,可以分为:本地依赖,库依赖和远程依赖。举例如下:

implementation fileTree(dir: 'libs', include:['.jar','.aar']):本地依赖,libs依赖的目录'.jar,.aar 依赖包的格式

implementation 'androidx.core:core-ktx:1.2.0' :远程仓库依赖

implementation project(':common') :库依赖

testImplementation 'junit:junit:4.+':自动化测试依赖