当前位置: 首页 > 工具软件 > Buildapp > 使用案例 >

Android中app目录下build.gradle文件的理解

松洛华
2023-12-01

先来看看build.gradle文件代码

plugins {
    id 'com.android.application'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.test"
        minSdk 21
        targetSdk 31
        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
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

分析

plugins {
    id 'com.android.application'
}

首先是第一行,应用了一个插件,一般有两种值选择:

com.android.application表示这是一个应用程序模块
com.android.library表示这是个库模块
区别:应用程序模块是可以直接运行的,库模块只能作为代码库依附于别的应用程序模块来运行

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.test"
        minSdk 21
        targetSdk 31
        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
    }
}

接着是android的闭包,在里面我们可以配置项目构建的各种属性

compileSdk 31用于指定项目的编译版本

defaultConfig可以对项目的更多细节进行配置
applicationId:是每一个应用的唯一标识符,绝对不能重复,默认会使用我们在创建项目时指定的包名
minSdk 21 表示最低兼容到Android5.0版本
targetSdk 31表示你在该目标版本上已经做过了充分的测试,系统会为你提供最新的功能
versionCode表示指定项目的版本号
versionName表示指定项目的版本名
testInstrumentationRunner用于在当前项目中启用JUnit测试

buildTypes用于生成安装文件的相关配置,通常只会有两个子闭包一个是debug,一个是relase
debug闭包用于生成测试版安装文件的配置,可以忽略不写
release闭包用于指定生成正式版安装文件的配置,minifyEnabled用于是否指定混淆时使用的规则文件 proguardFiles:混淆时的规则文件

sourceCompatibility:指定编译编译.java文件的jdk版本
targetCompatibility:确保class文件与targetCompatibility指定版本,或者更新的java虚拟机兼容

dependencies {

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'com.google.android.material:material:1.3.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
}

可以指定当前项目所有的依赖关系,一般来说一共有三种依赖关系:本地依赖,库依赖,远程依赖
本地依赖:可以对本地的Jar包或目录添加依赖关系
库依赖:可以对项目中的库模块添加依赖关系
远程依赖:可以对Jcenter仓库上的开源项目添加依赖关系

 类似资料: