AI智能
改变未来

【Android开发日志】build.gradle 文件详解(6)

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\'}

项目文件讲解告一段落,下期讲解日志工具的使用。

欢迎关注小试编程

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【Android开发日志】build.gradle 文件详解(6)