首页 > 其他分享 >Kotlin + buildSrc:更好的管理Gadle依赖

Kotlin + buildSrc:更好的管理Gadle依赖

时间:2023-06-30 11:32:49浏览次数:29  
标签:implementation Kotlin support Gadle rxjava buildSrc com retrofit

Kotlin + buildSrc:更好的管理Gadle依赖_Gradle

为了充分利用Android Plugin for Gradle 3.0+的优点,将Android项目拆分成多个module的做法越来越常见。然而,随着module数量的增多,我们很快就会遇到依赖管理的混乱问题。

管理Gradle依赖的三种不同方法:

  • 手动管理
  • 使用Google推荐的“ext”
  • Kotlin + buildSrc

1、手动管理

这是一种大多数人在采用的管理依赖的方法,但每次升级依赖库时都需要做大量的手动更改。

module_a/build.gradle
implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"
module_b/build.gradle
implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"

这里存在许多重复的配置,而且当你的项目有很多module时很难管理依赖库的版本更新。

Google推荐:使用gradle的extra属性

Google在Android官方文档中推荐这种管理依赖的方法。许多项目例如ButterKnifePicasso等都在使用这种方法。

此方法非常适用于更新support library的版本,因为每个support library都具有相同的版本号,你只需要在一个地方更改它就行了。Retrofit等其它第三方库也是如此。

Root-level build.gradle
ext {
  versions = [
    support_lib: "27.0.2",
    retrofit: "2.3.0",
    rxjava: "2.1.9"
  ]
  libs = [
    support_annotations: "com.android.support:support-annotations:${versions.support_lib}",
    support_appcompat_v7: "com.android.support:appcompat-v7:${versions.support_lib}",
    retrofit :"com.squareup.retrofit2:retrofit:${versions.retrofit}",
    retrofit_rxjava_adapter: "com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit}",
    rxjava: "io.reactivex.rxjava2:rxjava:${versions.rxjava}"
  ]
}
module_a/build.gradle
implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava
module_b/build.gradle
implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava

这种方法是手动管理的一大进步,但是缺少IDE的支持,更准确的说是在更新依赖库的时候IDE不能自动补全。

Kotlin + buildSrc == Android Studio Autocomplete

标签:implementation,Kotlin,support,Gadle,rxjava,buildSrc,com,retrofit
From: https://blog.51cto.com/u_16163480/6589342

相关文章

  • 【Android Kotlin】全网最全的Android Kotlin入门教程指南,入股不亏
    前言2017年的谷歌大会上,Kotlin被指定为官方的Android开发语言,从长远的角度来看,Kotlin语言是作为Android开发者必须要掌握的一门编程语言。Kotlin编程语言极易上手,而且它不像Java那样代码繁琐,Kotlin代码更简洁,可读性也更强,可以花更少的时间来编写和理解代码,极大地提高了工作效率,不仅......
  • 为什么说Kotlin是未来
    相比起Java语言,Kotlin的优势确实非常明显:第一,极高的生产效率。Kotlin是一种跨平台的静态类型语言,具有现代简洁的语法,关键特性包括null安全性、协程、数据类型、扩展函数等;这让开发者会用得很爽:前期开发效率更高,中期线上问题更少,后期代码更容易维护。而这正是Java做不到的......
  • 浅谈 Kotlin 与 Java 互操作 (上)
    前言浅谈Kotlin与Java互操作(上)Kotlinis100%interoperablewithJavaandAndroidKotlin官网的一句标语,其旨意是表达kotlin的Interoperable-互操作特性互操作就表示Kotlin中可以调用Java的开放接口来访问成员属性和成员方法,同时在Java代码中也百分百兼容Kotlin......
  • Kotlin 语法糖(对象不为空返回自身,为空返回其他)
    原文地址:Kotlin语法糖(对象不为空返回自身,为空返回其他)-Stars-One的杂货小窝开发中,经常会有这样逻辑:判断对象如果不为空,则取对象本身;为空,则得到其他对象;然后每次写个if还是有些啰嗦,可以使用kotlin的语法糖可空对象使用?:如果是可空对象,可以使用?:来实现原......
  • Kotlin入门|Android Kotlin 初学者学习网站+最新学习资源
    Kotlin是一门可以运行在Java虚拟机、Android和浏览器上的静态语言,它与Java100%兼容。如果你对Java非常熟悉,一般上手Kotlin也会比较容易。在我从事Android开发的多年来,也积累了很多专业的学习网站和宝贵的学习资源,现无偿分享给大家,不求面面俱到,只希能给各位Android开发者和带来......
  • 安卓系列之 kotlin 项目实战--基础 demo
    本章记录一个基础的demo项目,使用kotlin+协程+retrofit+okhttp3+MVVM实现。功能需求调用天气api,在主页显示天气情况。大致流程api申请及实体分析网络请求权限添加kotlin,协程,网络框架等依赖网络框架Retrofit+okhttp3主页页面绘制基础类构建调用接口并显示在当前页面api申请......
  • Android-Kotlin-单例模式
    先看一个案例,非单例模式的案例:描述Dog对象:packagecn.kotlin.kotlin_oop08classDog(varname:String,varcolor:String){/***显示狗狗的名字*/funshowDogName(){println("狗狗的名字是:${this.name}")}/***显示狗狗的颜......
  • Android-Kotlin-枚举ENUM
    为什么要用枚举?枚举的好处有:1.使程序更容易编写和维护2.防止用户乱输入,是一种约束来看两个案例案例一星期:星期的枚举:enumclass类名{}packagecn.kotlin.kotlin_oop09/***定义星期的枚举类*/enumclassMyEnumerateWeek{星期一,星期二,星期三,星......
  • Android-Kotlin-函数表达式&String与int转换$异常处理
    Kotlin的函数表达式:packagecn.kotlin.kotlin_base03/***函数第一种写法*/funaddMethod1(number1:Int,number2:Int):Int{returnnumber1+number2}/***函数第二个种写法*/funaddMethod2(number1:Int,number2:Int)=number1+number2/***......
  • Android-kotlin-接口与多态的表现
    上一篇博客介绍了Android-Kotlin-抽象类与多态的表现;而这一篇博客专门介绍下接口与多态的表现1.选择包名,然后右键:2.选择Class类型,会有class:3.选择File类型,不会自动有class:5.选择interface,是创建接口:6.目录结构:1.定义手机充电接口标准规范InterfacePhone:packagecn.kotlin.kot......