作为一个Android开发,当你习惯了使用Kotlin开发后,突然发现gradle文件也可以用kotlin写了,是不是感觉很Nice! 废话不多说,先扒文档 https://developer.android.com/studio/build/migrate-to-kts Google官方文档 migrate-to-kts 和 https://docs.gradle.org/current/userguide/kotlin_dsl.html gradle官方文档kotlin_dsl 看了之后是不是感觉好像无从下手? 先别急,如果是现有项目,要改造,请记得先起个分支再继续。
首先在项目根目录下新建个文件夹buildSrc,然后在buildSrc里新建一个build.gradle.kts文件,文件内容如下
plugins {`kotlin-dsl`}
repositories {mavenCentral()}
然后Sync一下项目,等结束了在这个文件夹下新建几个类用来统一管理app和lib下面build.gradle.kts中的引用,这样你的gradle清单文件会看起来清爽很多。在这里我要说的是有一些在文档里不好找的内容,当然借助百度或Google我相信你也能慢慢摸索出这些,但是喂到嘴边的东西它不香嘛,干嘛费那个功夫呢,你说是不是。然后我们要改造的就是settings.gradle.kts文件了,直接重命名或删除原来的settings.gradle新建settings.gradle.kts都行,直接贴代码
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
google()
mavenCentral()
}
rootProject.name = "xxx" //项目名称<br>
include(":app")//主包名<br>
include(":xxx")//lib或model名
这里我先引一个概念Maven BOM,可能有些人已经接触过它了,真香定律永远适用。它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号,用它最大的好处是可以解决依赖冲突。如果你的项目中使用了Google Service和Firebase, 请参考https://firebase.google.com/docs/android/setup 将 Firebase 添加到您的 Android 项目,你看,Bom使用是不是和平时的依赖一样too Simple too Easy!
但是,假如你想用一个非RELEASE版本的SNAPSHOT,该如何操作呢?且看Google官方的Demo是如何操作的,这里以 https://github.com/android/compose-samples Jetpack Compose 为例,就是要在settings的dependencyResolutionManagement里新加对应的maven即可,先定义snapshot的版本,然后在repositories中新加maven
val snapshotVersion : String? = System.getenv("COMPOSE_SNAPSHOT_ID")
snapshotVersion?.let {
maven { url =uri("https://androidx.dev/snapshots/builds/$it/artifacts/repository/") }
}
如果你对Gradle的了解更多一点,或许就不会像我之前那样走更多的弯路,定义一堆的类在gradle.kts文件中引用了,因为gradle会替你完成这项目工作,具体怎么做Google的Sample里已经给出了示例,你只需要依葫芦画瓢就行,难度几乎为0!你可以在demo的gradle文件夹下找到 https://github.com/android/compose-samples/blob/main/Crane/gradle/libs.versions.toml 文件,并查看它在项目中两个gradle.kts文件中是如何引用的,至于ndk的引用也比较简单
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
}
还在等什么? 不搞个Demo试试么!
网友评论