build.gradle 文件详解
- 根目录下的build.gradle
- app下的build.gradle文件
Gradles是一个非常先进的项目构建工具,来源不详述。
在第二篇我们说过,有两个
build.gradle
文件,一个在项目根目录,一个在
app
文件夹内。
根目录下的build.gradle
源代码如下:
buildscript {ext.kotlin_version = \'1.3.71\'repositories {google()jcenter()}dependencies {classpath \'com.android.tools.build:gradle:3.6.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()}}task clean(type: Delete) {delete rootProject.buildDir}
机器自动生成的代码比较难懂,我们理解它的关键部分,此文件一般不需要更改。
repositories {google()jcenter()}
有两个
repositories{ }
,都声明了
google()
和
jcenter()
,这是两个云端代码仓库。
-
google()
对应着Google自家的依赖库
-
jcenter()
对应着一些第三方开源库
声明这两个以后,我们就可以在项目内,引用仓库中的依赖库了。当然还有一些阿里云的仓库可以自己添加。
dependencies {classpath \'com.android.tools.build:gradle:3.6.3\'classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"}
我们看到
dependencies{ }
内,用
classpath
声明了
gradle
与
kotlin
插件。为什么声明?Gradle是一个多语言共用的构建工具,我们这里使用
com.android.tools.build:gradle:3.6.3
插件,其版本号一般与Android Studio版本号一致。第二行声明
kotlin
插件是指明此项目由Kotlin开发。
app下的build.gradle文件
完整代码如下:
pply plugin: \'com.android.application\'apply plugin: \'kotlin-android\'apply plugin: \'kotlin-android-extensions\'android {compileSdkVersion 29buildToolsVersion \"29.0.3\"defaultConfig {applicationId \"com.example.helloword\"minSdkVersion 21targetSdkVersion 29versionCode 1versionName \"1.0\"testInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile(\'proguard-android-optimize.txt\'), \'proguard-rules.pro\'}}}dependencies {implementation fileTree(dir: \'libs\', include: [\'*.jar\'])implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"implementation \'androidx.appcompat:appcompat:1.1.0\'implementation \'androidx.core:core-ktx:1.2.0\'implementation \'androidx.constraintlayout:constraintlayout:1.1.3\'testImplementation \'junit:junit:4.12\'androidTestImplementation \'androidx.test.ext:junit:1.1.1\'androidTestImplementation \'androidx.test.espresso:espresso-core:3.2.0\'}
代码很多,我们分段分析:
apply plugin: \'com.android.application\'
应用一个应用程序模块。这里一般应用两个插件:
com.android.application
,
com.android.library
。前者插件可直接运行;后者为库,只可在代码段中引用运行。
apply plugin: \'kotlin-android\'
Kotlin开发必须插件。
apply plugin: \'kotlin-android-extensions\'
Kotlin开发扩展插件,为开发提供便利。
下面一段
android { }
闭包,解析请看注释:
android {compileSdkVersion 29 //指定项目的编译版本,29是指Android10 SDK版本buildToolsVersion \"29.0.3\" //指定构建工具版本defaultConfig { //项目细节配置applicationId \"com.example.helloword\" //应用ID标识,若需要更改也在此处minSdkVersion 21 //最低兼容Android版本,21指Android5 版本targetSdkVersion 29 //23以上,程序默认启用“运行时权限功能”versionCode 1 //指定项目的版本号versionName \"1.0\" //指定项目版本名testInstrumentationRunner \"androidx.test.runner.AndroidJUnitRunner\"// 用于启用JUnit测试,保证功能正确与稳定}buildTypes { //生成安装文件的相关配置// debug包指定生成测试版安装文件的配置,此处忽略release { // 指定生成正式版安装文件的配置minifyEnabled false // 指定是否使用混淆规则文件,防止程序被破解proguardFiles getDefaultProguardFile(\'proguard-android-optimize.txt\'), \'proguard-rules.pro\'// 指定混淆规则文件,.txt是在<AndroidSDk>/tool/proguard目录下,所有项目通用混合规则// 当前项目根目录,当前项目特有规则}}}
注:Android Studio直接运行都为测试版程序,正式版打包以后详解。
最后还有一个
dependencies{ }
闭包,此块指定了项目的所有依赖。
可添加的包括:本地的
jar
包/目录、项目中的库依赖、远程依赖(
jcenter
开源项目等)。我们添加完这些库后,Gradle会在构建项目时自动检测,下载缺少的库文件,并配置到目录当中。这也是我们第一次打开项目时下载时间长的原因。
dependencies{ }
代码详解请看注释:
dependencies { // 指定当前项目所有依赖关系implementation fileTree(dir: \'libs\', include: [\'*.jar\'])// 本地依赖声明,libs目录下所有.jar文件都添加到构建路径中implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version\"// 远程依赖声明,‘域名:工程名:版本号’implementation \'androidx.appcompat:appcompat:1.1.0\'// 远程依赖声明,域名用于区别:不同公司的库工程implementation \'androidx.core:core-ktx:1.2.0\'// 远程依赖声明,工程名用于区别:同公司、不同的库工程implementation \'androidx.constraintlayout:constraintlayout:1.1.3\'// 远程依赖声明,版本号用于区别:同公司、同库工程、不同版本// 以下均为声明测试例程用库testImplementation \'junit:junit:4.12\'androidTestImplementation \'androidx.test.ext:junit:1.1.1\'androidTestImplementation \'androidx.test.espresso:espresso-core:3.2.0\'}
项目文件讲解告一段落,下期讲解日志工具的使用。
欢迎关注小试编程