Android Gradle Composing builds 管理三方依赖
Android Gradle Composing builds 管理三方依赖
- Android Gradle Composing builds 管理三方依赖
- Gradle Composing builds 是啥?
- Gradle Composing builds 怎么用
Android Gradle Composing builds 管理三方依赖
最近在搞个自己的学习的Compose项目,于是也想尝试尝试新的依赖管理方式,也就是今天的主题 Gradle Composite。
之前一直在 buildSrc管理依赖,使用非常方便,但是问题是我就修改一个版本号,你就给我全量更新,这可真的是让人头疼啊,于是Gradle Composing builds它来了。
先放出demo地址,方便大家学习。
https://github.com/leown/ComposingBuildsDemo
Gradle Composing builds 是啥?
摘自 Gradle 文档:复合构建只是包含其他构建的构建. 在许多方面,复合构建类似于 Gradle 多项目构建,不同之处在于,它包括完整的 builds ,而不是包含单个 projects
- 组合通常独立开发的构建,例如,在应用程序使用的库中尝试错误修复时
- 将大型的多项目构建分解为更小,更孤立的块,可以根据需要独立或一起工作
Gradle Composing builds 怎么用
我也参考了一些网上的文章,大多数都是依赖于build-toos 4.0.0+,本篇文章会以最新版本build-toos 7.1.2去配置。
创建plugin module,名称随意,这里我们命名为 plugin-version
删除无用文件
修改 plugin-version 中的 build.gradle.kts 文件
plugins {id("java-gradle-plugin")id("org.jetbrains.kotlin.jvm") version "1.6.10" }repositories {google()mavenCentral()gradlePluginPortal() }java {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8 }dependencies {//添加Gradle相关的API,否则无法自定义Plugin和Taskimplementation(gradleApi())implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10") }gradlePlugin {plugins {create("version") {//添加插件id = "com.ileo.plugin.version"//在根目录创建类 VersionPlugin 继承 Plugin<Project>implementationClass = "com.ileo.plugin.version.VersionPlugin"}} }
在plugin-version module中创建VersionPlugin类,继承Plugin(这里可以写一些逻辑处理,比如根据环境配置对应的key)
package com.ileo.plugin.versionimport org.gradle.api.Plugin import org.gradle.api.Projectclass VersionPlugin : Plugin<Project> {override fun apply(target: Project) {} }
在plugin-version module中创建依赖包和版本号的 kt 文件(和buildSrc一样),可以声明多个kt文件
package com.ileo.plugin.version/*** @author: ning.wang* @date: 2022-04-01 6:57 下午* @desc: 依赖包和版本号*/ object Libs {private const val activityVersion = "1.4.0"private const val fragmentVersion = "1.4.1"private const val recyclerviewVersion = "1.2.1"private const val appcompatVersion = "1.4.1"private const val constraintlayoutVersion = "2.0.4"private const val coreKtxVersion = "1.7.0"private const val testExtVersion = "1.1.2"private const val testEspressoVersion = "3.3.0"private const val junitVersion = "4.12"const val activity = "androidx.activity:activity-ktx:$activityVersion"const val fragment = "androidx.fragment:fragment-ktx:$fragmentVersion"const val recyclerview = "androidx.recyclerview:recyclerview:$recyclerviewVersion"const val appcompat = "androidx.appcompat:appcompat:$appcompatVersion"const val constraintlayout = "androidx.constraintlayout:constraintlayout:$constraintlayoutVersion"const val coreKtx = "androidx.core:core-ktx:$coreKtxVersion"const val testExt = "androidx.test.ext:junit:$testExtVersion"const val testEspresso = "androidx.test.espresso:espresso-core:$testEspressoVersion"const val junit = "junit:junit:$junitVersion"}
在项目 settings.gradle.kts 文件内添加 includeBuild(“versionPlugin”) (重点\color{red}{重点}重点)
pluginManagement {repositories {gradlePluginPortal()google()mavenCentral()} } dependencyResolutionManagement {repositories {google()mavenCentral()} } rootProject.name = "ComposingBuildsDemo" include(":app") includeBuild("plugin-version")
在app或module的 build.gradle.kts 中使用 plugin-version
// 1. 导入plugin-version 依赖类 import com.ileo.plugin.version.* plugins {id("com.android.application")id("org.jetbrains.kotlin.android")// 2. 导入 plugin-version 插件id("com.ileo.version") }android {compileSdk = AndroidConfig.compileSdkVersiondefaultConfig {applicationId = AndroidConfig.applicationIdminSdk = AndroidConfig.minSdkVersiontargetSdk = AndroidConfig.targetSdkVersionversionCode = AndroidConfig.versionCodeversionName = AndroidConfig.versionNametestInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"}buildTypes {getByName("release") {isMinifyEnabled = falseproguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")}}compileOptions {sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = "1.8"} }dependencies {// 使用plugin-version中声明的 Libs.kt 的三方库implementation(Libs.coreKtx)implementation(Libs.appcompat)testImplementation(Libs.junit)androidTestImplementation(Libs.testExt)androidTestImplementation(Libs.testEspresso) }
到此已经配置完成,大家快去玩耍起来吧!!!
Android Gradle Composing builds 管理三方依赖相关推荐
- 【gradle Composing builds】gradle依赖管理Composing builds之杂症-快速同步
Composing builds杂症-快速同步 问题描述 作为一个有强迫症的人,在使用Composing builds后一直耿耿于怀,第一次打开项目后,Ctrl+左键点击定义的依赖不能跳转,build ...
- Android Gradle 7.x新版本的依赖结构变化
版本的小蜜蜂/小海豚/电鳗版本的Android Studio新建工程的依赖结构和之前的发生了变化,主要有: 原来在工程build.gradle中的buildscript和allprojects,移动至 ...
- android gradle tools 3.X 中依赖,implement、api 和compile区别
http://blog.csdn.net/marvinhq/article/details/73477128
- Android Gradle Plugin 源码解析(上)
一.源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.3.0 gradle 版本:4.1 Gradle源码总共3 ...
- Android Studio统一依赖管理Composing builds
glideVersion : "4.11.0", okhttpVersion : "3.11.0", retrofitVersion : "2.3.0 ...
- Android Studio使用Composing builds统一依赖管理
Composing builds 一.啥是 Composing builds ?? https://docs.gradle.org/current/userguide/composite_builds ...
- Android Studio统一依赖管理Composing builds,2021最新网易Android面经
支持Android Studio的代码补全,以下演示示例图来自于网络 使用方式可参考:Kotlin + buildSrc for Better Gradle Dependency Management ...
- Android gradle统一依赖版本:Composing builds
之前写过一篇Android gradle统一依赖版本:kotlin+buildSrc的集成使用, 两者的区别可以参照再见吧 buildSrc, 拥抱 Composing builds 提升 Andro ...
- 统一依赖管理Composing builds
背景 在我们的AS项目中,经常引用多个Module,多人参与项目开发,这种背景下,我们会时常遇到版本冲突问题,出现不同的compileSdkVersion等,导致我们的包体变大,项目运行时间变长,所以 ...
最新文章
- MATLAB句柄相关函数和代码示例(设置美化图表属性)
- Java-Web Response响应和Request请求
- Training a classifier
- c语言解析分隔符文本,c – 使用分隔符读取文件
- 一些关于ROS中move_base的理解
- 解决无法连接到visual studio开发服务器的问题
- 将Visual Studio打造成为Node.js IDE
- [Java] 蓝桥杯BASIC-30 基础练习 阶乘计算
- 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
- [Manifest]关于version
- 你靠什么在单位立足?此文堪称经典
- 配置VIM语法高亮及自动缩进
- 装系统弹出计算机丢失,重装系统时提示缺少硬盘驱动怎么解决
- 设计模式-抽象工厂模式
- IAR使用方法建立工程文件超详细操作步骤
- Keil更改背景颜色
- 计算机管理员注销,肿么注销计算机管理员
- 【Cartographer参数详解,调参,降低计算量调优笔记记录】
- java,mqtt-client开发创建客户端
- 2017华师在线计算机作业,华师2017春《计算机动画》在线作业