Gradle-----buildSrc

简介: 在Android项目中,使用buildSrc抽象命令式逻辑

buildSrc

我们在编写Android项目时,当我们的项目越来越复杂的时候,我们的业务类以及所需的其他引用会写的到处都是,所以Gradle建议我们使用buildSrc抽象式命令逻辑来构建我们的项目。

之前

在之前我们为了把在build.gradle中dependencies所有的引用库都堆积到一起比如:

···
implementation("com.google.protobuf:protobuf-javalite:3.17.3")
implementation("androidx.datastore:datastore:1.0.0-rc01")
//more...
···
这样我们就不能很好的去管理项目中引用的代码库,使用gradle中的buildSrc可以很好的解决这个问题。

构建buildSrc

根据官方文档buildSrc首先我们先要在Android项目的根目录(注意:一定要是根目录与build.gradle(project)同级)中创建一个buildSrc文件夹如:

image.png
然后在该目录下创建一个build.gradle文件。下一步我们同步一下我们的项目,等待Android studio自动引用相关插件。等待同步完成。我们根据官方文档创建以下项目:

buildSrc/build.gradle
···
repositories {

mavenCentral()

}

dependencies {

testImplementation 'junit:junit:4.13'

}
···

├── buildSrc
│   ├── build.gradle
│   └── src
│       ├── main
│       │   └── java
│       │       └── com
│       │           └── enterprise
│       │               ├── Deploy.kt
│       │               └── DeploymentPlugin.kt
│       └── test
│           └── java
│               └── com
│                   └── enterprise
│                       └── DeploymentPluginTest.kt
├── settings.gradle
├── subprojecto-one
│   └── build.gradle.kts
└── subproject-two
    └── build.gradle.kts

接下来我们在Depoly.kt文件下编写一个版本控制代码:

object Deploy{
    const val app_version="1.0.0"
}

紧接着在build.gradle引用我们编写的版本控制代码

defaultConfig {
        applicationId "com.example.learnproject"
        minSdk 24
        targetSdk 32
        versionCode 1
        versionName Deploy.app_version

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

这样我们就把versionName的版本号给抽离了出来,当然你也可以把其他的给抽离出来比如 minSdk,targetSdk等等。

当然我们也可以把依赖给抽离出来,在Deploy文件中创建一个Dependencies对象,然后添加我们需要的依赖如下:

   object Versions{

       object AndroidX{
          const val annotation = "1.1.0"
       }
   }


object Dependencies {
 const val androidx_annotation = "androidx.annotation:annotation:${Versions.AndroidX.annotation}"
}

然后在build.gralde的dependenices中使用:

    implementation Dependencies.androidx_annotation

至此关于使用gradle中buildSrc来抽象命令式逻辑使得你的Android项目更加的清晰,易于管理。

(记录一个错误代码,当没有在buildSrc目录下创建build.gradle文件,就编写依赖并使用的情况下会出现一个属性未找到的错误,经排查应该是gradle执行的时候没有关联上,解决办法:去项目目录删除.grdle,buildSrc目录,重新同步项目---->创建buildSrc---->创建build.gradle--->同上代码并同步项目)

目录
相关文章
|
Java Maven
最快的 maven repository--阿里镜像仓库
国内速度超快的maven repository
161869 0
|
1月前
|
自然语言处理 监控 数据可视化
2025年国内外知名数据可视化软件盘点:功能亮点与应用价值
在数字化转型背景下,数据可视化软件成为企业释放数据价值的关键工具。本文从功能亮点、市场表现等维度,解析瓴羊Quick BI、Tableau、Power BI等主流工具在可视化能力、用户友好性、集成兼容性等方面的差异,并结合行业应用与用户评价,为企业选型提供实用参考。像瓴羊 Quick BI 的“智能小Q”一样,自然语言交互、智能洞察(如自动识别数据异常、预测趋势)将成为标配。
|
应用服务中间件
使用ehcache持久化数据到磁盘 并且在应用服务器重启后不丢失数据
使用ehcache时如何持久化数据到磁盘,并且在应用服务器重启后不丢失数据1、如何持久化到磁盘使用cache.flush(),每次写入到cache后调用cache.flush() ,这样ehcache 会将索引(xxx.index)回写到磁盘。
3431 0
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
12868 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
存储 消息中间件 JSON
DDD基础教程:一文带你读懂DDD分层架构
DDD基础教程:一文带你读懂DDD分层架构
|
算法
PID算法原理分析
【10月更文挑战第12天】PID控制方法从提出至今已有百余年历史,其由于结构简单、易于实现、鲁棒性好、可靠性高等特点,在机电、冶金、机械、化工等行业中应用广泛。
607 0
|
Java
Gradle笔记 八 Gradle 插件(一)
Gradle笔记 八 Gradle 插件
392 0
|
开发工具
解决Flutter中ThemeData.primaryColor在AppBar等组件中不生效
解决Flutter中ThemeData.primaryColor在AppBar等组件中不生效
461 1
|
JavaScript
VScode格式化vue文件--避免html属性换行
VScode格式化vue文件--避免html属性换行
1533 0
|
SQL 关系型数据库 MySQL
【MySQL】事务管理 -- 详解(上)
【MySQL】事务管理 -- 详解(上)