快速入门安卓Gradle指南(6/10)安卓项目工程配置

牛客高级系列专栏:

安卓(安卓系统开发也要掌握)

嵌入式

本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对安卓Gradle的理解。网上安卓资料千千万,笔者将继续维护专栏,承诺提供专栏内容免费技术答疑,直接咨询即可,助您提高安卓学习效率!

目录开始⬇

  • 1、工程的参数配置
  • 2、工程基础参数
    • 2.1 Gradle版本及运行参数
    • 2.2 settings.gradle配置
    • 2.3 local.properties配置
  • 3、根build.gradle配置
  • 4、模块build.gradle配置
    • 4.1 常见配置
    • 4.2 进阶配置
  • 5、全局配置
    • 5.1 使用ext块配置
    • 5.2 使用config.gradle配置

使用Gradle构建工程,那肯定离不开工程的配置。本文将介绍几个常见的工程配置。

1、工程的参数配置

创建完新工程后,还需要对工程参数去做一些定制化,才可以开始编写代码。从工程的层面来看,我们需要配置以下几项:

  • 工程基本参数
  • 仓库地址以及插件引用申明
  • Android Gradle Plugin

2、工程基础参数

工程基本参数包含以下几点:

  • Gradle版本及运行参数;
  • settings.gradle;
  • local.properties;

2.1 Gradle版本及运行参数

修改Gradle版本主要有两种方法:

  1. 可以在gradle/wrapper/gradle-wrapper.properties文件中修改,文件目录如下:

alt

直接修改版本号,如下面修改版本号为7.0.2:

distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-bin.zip

进行修改,然后点击File-Sync Project with Gradle Files进行同步。

  1. File-Project Structure 在下图位置直接修改。 image.png

如果我们在Gradle版本更新之后,想要Gradle的运行效率更高,就可以打开gradle.properties文件,然后将下图的2048m修改为更高的参数。

org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8

当然这需要在电脑配置允许的前提下,来加快工程编译速度。建议将 -Xmx 的值设置为你计算机内存的一半或四分之一,以确保 JVM 有足够的空间来处理应用程序的内存需求。例如,如果你的计算机内存为 8GB,那么可以将 -Xmx 参数值设置为 4GB 或 2GB。

2.2 settings.gradle配置

该文件是Android项目的Gradle设置文件,定义了应用程序的模块和版本信息,指定当前工程,需要把哪些子工程给纳入编译里去:

alt

如上面所示,一开始创建新工程时,会自动创建名为‘app’的模块。当工程扩大后,一般需要再增加新的模块,所以需要把当前工程里的app,core,modules,supports这几个模块写到settings.gradle

rootProject.name = "DemoApp"
include ':app', ':core',':modules',':supports'

rootProject.name 是一个字符串类型的属性,用于指定 Gradle 项目的根目录名称。在 Gradle 多项目构建中,可以通过设置不同的 rootProject.name 来指定各个子项目的根目录名称,以便于统一管理。例如,如果你的 Gradle 项目包含了多个子项目,而每个子项目都需要设置自己的名称,那么你可以在 settings.gradle 文件中为每个子项目设置一个不同的 rootProject.name,例如:

rootProject.name = 'my-gradle-project'

include ':sub-project-1'
project(':sub-project-1').name = 'my-sub-project-1'

include ':sub-project-2'
project(':sub-project-2').name = 'my-sub-project-2'

在上面的例子中,我们首先设置了根项目的名称为 my-gradle-project,然后使用 include 语句指定了两个子项目:sub-project-1 和 sub-project-2。接着,使用 project 方法分别为两个子项目设置了不同的名称。

2.3 local.properties配置

这个其实和本地化参数配置有关,这些配置指的是每一台电脑不一样的配置。比如说。安卓SDK路径的存放路径是对于每一个人,每一台电脑都肯定是不一样的。所以说我们需要把SDK路径写到local.properties里面:

sdk.dir=E:\Android_SDK

因为local.properties文件不会记录到版本管理库。这是因为系统默认在.gitignore文件(Git版本管理工具的忽略文件,写在该文件里的项目就不受git工具管理)里配置了local.properties:

alt

所以如果有不希望被别人看到的参数,而又要在我们编辑时用到的参数,就可以把它记录到local.properties。比如说账号密码等数据。

3、根build.gradle配置

仓库地址及插件引用声明在工程根目录build.gradle文件进行配置。

buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.2'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        google()
        mavenCentral() // Warning: this repository is going to shut down soon
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

buildscript

  • repositories:主要是grade脚本执行所需要的依赖,以及这些依赖下载仓库地址。如上面代码配置了谷歌和阿里云的仓库,告诉Gradle脚本,可以去这两个仓库里面去查找。
  • dependencies:插件声明,用于声明项目程序依赖的外部库,如上面声明了anroid gradle插件和greendao插件;

allprojects

  • repositories:可以看到这里也有repositories,也是声明执行所需要的依赖,以及这些依赖下载仓库地址。不过要区分清楚,buildscript-repositories是面向gradle脚本,而allprojects-repositories是面向工程里的子工程的

task clean

执行这个任务会去删除我们工程下的build目录。

4、模块build.gradle配置

4.1 常见配置

安卓工程实际上就是依赖于 Gradle和Android Gradle Plugin的管理和编译的。所以除了Gradle配置之外,其他的配置基本上都是围绕着ndroid Gradle Plugin进行。下面我们看看一个实际的app-build.gradle文件,为方便讲解,我直接用代码写注释进行讲解:

apply plugin: 'com.android.application' //[注释1]:代表app子模块会编译成apk
apply plugin: 'org.greenrobot.greendao' //使用第三方库 greendao

android {
    compileSdkVersion 30 //参与工程编译的SDK版本
    buildToolsVersion "30.0.3" //安卓构建工具包的版本,如adb和dx工具
    defaultConfig { //当前工程默认参数,后续会讲解如何配置特定参数,实现构建变体,即一个app工程编译出多个APK
        applicationId "com.example.xurui" //应用的包名
        minSdkVersion 28  //应用所支持的最低SDK版本
        targetSdkVersion 30 //[注释2]:安卓系统提供前向兼容的主要手段,详见下文分析;
        versionCode 1  //用户不可见,用于应用市场,或者是研发人员编程之后作为内部识别版本判断APK新旧程度,判断是否要升级
        versionName “1.0” //面向消费者,消费者可以看到APK的版本
        //是否支持多dex,详见《多Dex支持》:https://www.nowcoder.com/discuss/483581323722883072
        multiDexEnabled true 
        
         //指定在 Android 测试中使用哪个 Instrumentation Test Runner 的属性,一般很少用
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs { //[注释3]:签名
        release {
            storeFile file("..\\common\\keystore\\xp17.jks")
            storePassword '20210708'
            keyAlias 'android'
            keyPassword '20210708'
        }
    }

    buildTypes { //[注释4]:构建类型
        release {
            signingConfig signingConfigs.release
            /*'buildConfigField' 是一种用于在项目的 BuildConfig 
            类中定义自定义常量的 Gradle DSL(Domain-Specific Language)。通过
            使用 'buildConfigField',可以在应用程序构建过程中在 BuildConfig 类中创建常量*/
            buildConfigField("boolean", "IS_ON_TEST_MODE", "false") 
            minifyEnabled true
            
            //Proguard混淆所使用的配置文件
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 
        }

        debug {
            signingConfig signingConfigs.release
            buildConfigField("boolean", "IS_ON_TEST_MODE", "false")
        }
    }
}

greendao { //第三方库配置,在此作为案例展示第三方库如何配置
    schemaVersion 3
    targetGenDir 'src/main/java'
    daoPackage 'com.example.xurui.greendao'
}

dependencies { //[注释5]:用于声明 Android 应用程序项目所依赖的库和模块
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    testImplementation 'junit:junit:4.13.2'
    implementation "com.google.android.material:materia

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

快速入门安卓Gradle指南 文章被收录于专栏

如果你想学习Android App开发,那么学习Gradle一定是必要的。 Gradle是一种构建工具,用于编译和构建Android应用程序,它可以自动处理依赖关系,生成APK文件等。通过本指南,你将掌握Gradle的基本概念和使用技巧,以及如何在工程中配置Gradle。通过学习Gradle,你可以更高效地构建和管理你的Android应用程序,提高你的开发效率,从而更好地满足用户需求。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务