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去配置。

  1. 创建plugin module,名称随意,这里我们命名为 plugin-version

  2. 删除无用文件

  3. 修改 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"}}
    }
  4. 在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) {}
    }
    
  5. 在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"}
    
  6. 在项目 settings.gradle.kts 文件内添加 includeBuild(“versionPlugin”) (重点\color{red}{重点}重点

    pluginManagement {repositories {gradlePluginPortal()google()mavenCentral()}
    }
    dependencyResolutionManagement {repositories {google()mavenCentral()}
    }
    rootProject.name = "ComposingBuildsDemo"
    include(":app")
    includeBuild("plugin-version")
  7. 在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 管理三方依赖相关推荐

  1. 【gradle Composing builds】gradle依赖管理Composing builds之杂症-快速同步

    Composing builds杂症-快速同步 问题描述 作为一个有强迫症的人,在使用Composing builds后一直耿耿于怀,第一次打开项目后,Ctrl+左键点击定义的依赖不能跳转,build ...

  2. Android Gradle 7.x新版本的依赖结构变化

    版本的小蜜蜂/小海豚/电鳗版本的Android Studio新建工程的依赖结构和之前的发生了变化,主要有: 原来在工程build.gradle中的buildscript和allprojects,移动至 ...

  3. android gradle tools 3.X 中依赖,implement、api 和compile区别

    http://blog.csdn.net/marvinhq/article/details/73477128

  4. Android Gradle Plugin 源码解析(上)

    一.源码依赖 本文基于: android gradle plugin版本: com.android.tools.build:gradle:2.3.0 gradle 版本:4.1 Gradle源码总共3 ...

  5. Android Studio统一依赖管理Composing builds

    glideVersion : "4.11.0", okhttpVersion : "3.11.0", retrofitVersion : "2.3.0 ...

  6. Android Studio使用Composing builds统一依赖管理

    Composing builds 一.啥是 Composing builds ?? https://docs.gradle.org/current/userguide/composite_builds ...

  7. Android Studio统一依赖管理Composing builds,2021最新网易Android面经

    支持Android Studio的代码补全,以下演示示例图来自于网络 使用方式可参考:Kotlin + buildSrc for Better Gradle Dependency Management ...

  8. Android gradle统一依赖版本:Composing builds

    之前写过一篇Android gradle统一依赖版本:kotlin+buildSrc的集成使用, 两者的区别可以参照再见吧 buildSrc, 拥抱 Composing builds 提升 Andro ...

  9. 统一依赖管理Composing builds

    背景 在我们的AS项目中,经常引用多个Module,多人参与项目开发,这种背景下,我们会时常遇到版本冲突问题,出现不同的compileSdkVersion等,导致我们的包体变大,项目运行时间变长,所以 ...

最新文章

  1. MATLAB句柄相关函数和代码示例(设置美化图表属性)
  2. Java-Web Response响应和Request请求
  3. Training a classifier
  4. c语言解析分隔符文本,c – 使用分隔符读取文件
  5. 一些关于ROS中move_base的理解
  6. 解决无法连接到visual studio开发服务器的问题
  7. 将Visual Studio打造成为Node.js IDE
  8. [Java] 蓝桥杯BASIC-30 基础练习 阶乘计算
  9. 翻译连载 | 第 11 章:融会贯通 -《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
  10. [Manifest]关于version
  11. 你靠什么在单位立足?此文堪称经典
  12. 配置VIM语法高亮及自动缩进
  13. 装系统弹出计算机丢失,重装系统时提示缺少硬盘驱动怎么解决
  14. 设计模式-抽象工厂模式
  15. IAR使用方法建立工程文件超详细操作步骤
  16. Keil更改背景颜色
  17. 计算机管理员注销,肿么注销计算机管理员
  18. 【Cartographer参数详解,调参,降低计算量调优笔记记录】
  19. java,mqtt-client开发创建客户端
  20. 2017华师在线计算机作业,华师2017春《计算机动画》在线作业

热门文章

  1. OpenCv中Numpy常用函数
  2. 【唐老狮】C#——转义字符
  3. 关于“打开数据库时出错: 到主机 的 TCP/IP 连接失败。”的解决方法
  4. sec^3 不定积分
  5. WeDrivePlugin64_24.dll 引发win7系统不能进入桌面
  6. 12V铅酸电池充放电保护板
  7. 长安大学计算机控制技术期末试题,长安大学汽车理论期末试卷及答案
  8. 树莓派部署BT下载机
  9. 航空公司营销渠道管理研究
  10. JS生成 UUID的四种方法