原文地址:https://dev.to/rzerostern/android-adios-groovy-migrar-a-kotlin-nuestro-buildgradle-n12 原文章更新时间是在23年6月

Android:再见 Groovy!将我们的 build.gradle 迁移到 Kotlin

安卓

西班牙语

科特林

教程

我的孩子们,今天有点忙碌,不过我已经从床上爬起来了,现在我有精力给你们写几行关于我们在 Android 开发中很长时间以来看到的主题:迁移 build.gradle文件到 Kotlin。

最近,Google 的文档通知,Kotlin Script (KTS) 现在将成为依赖同步的默认语言,并且从 Android Studio 的下一版本开始,此过程将成为新应用程序中的默认过程,因此这个小教程可以帮助您迁移从 Groovy 到 KTS 的一个小项目。
什么是KTS?

KTS 是 Kotlin Script 的缩写,在 Groovy 和 Kotlin 之间迁移语言并不意味着我们要改变 Android 中库导入的核心,这将继续使用 Gradle 来完成。对于新手来说,Gradle 是一个兼容各种编程语言的应用程序构建和日常自动化工具;它是用 Java 构建的,当 Android Kit Kat 到来时(或者稍早一些),它取代了 Ant。

KT 文件和 KTS 文件之间有几个区别,其中之一是 KT 文件由 Kotlin 编译器解释,而 KTS 由 Kotlin Scripting 支持,因此它们不需要事先编译(Javascript 是你吗?),在这种情况下这就是 Gradle 将如何考虑它而无需事先编译它。
需要很长时间吗?

很多人会认为这非常困难甚至耗时,但实际上它非常简单,因为你只需要更改 build.gradle 文件中的某些语法即可实现它,所以是时候动手了火
1.更改settings.gradle

第一件事是重命名文件,将.kts扩展名添加到文件中,您将看到以下行:

include ‘:app’

在KTS中,您必须将其更改为以下内容:

include(“app”)

在这个文件中没有什么可做的,即使你想尝试它,它也会让你同步你的依赖项。现在,重要的是不要使用单引号 ('),因为 Kotlin 会将它们解释为字符并给出错误。始终尝试在字符串中使用引号 ("),这样就不会出现任何问题。
2.更改根build.gradle

现在,执行相同的操作,更改根 build.gradle 中的文件名并更改以下内容:

如果您分配了版本变量(在外部节点上),请执行以下操作。更改以下内容:

buildscript {
ext.androidGradleVersion = “8.0.1”
ext.androidKotlinPlugin = “1.8.20”
}

为了这:

buildscript {
val androidGradlePlugin by extra(“8.0.1”)
val androidKotlinPlugin by extra(“1.8.20”)
}

我们还没有完成。下面我们将有插件节点,让我们将其更改为:

plugins {
id “com.android.application:androidGradleVersion"id"com.android.library:androidGradleVersion" id "com.android.library:androidGradleVersion"id"com.android.library:androidGradleVersion”
id “org.jetbrains.kotlin.android:$androidKotlinPlugin”
}

对此

plugins {
id(“com.android.application”) version “extra["androidGradlePlugin"]"applyfalseid("com.android.library")version"{extra["androidGradlePlugin"]}" apply false id("com.android.library") version "extra["androidGradlePlugin"]"applyfalseid("com.android.library")version"{extra[“androidGradlePlugin”]}” apply false
id(“org.jetbrains.kotlin.android”) version “${extra[“androidKotlinPlugin”]}” apply false
}

我们将准备好该文件,现在是时候继续处理模块的 build.gradle 文件(或多个文件)了。
3.更改我们模块的build.gradle

在这种情况下,我们将更改应用程序模块之一,在这种情况下,如果您有更多模块,则必须对其余模块执行几乎相同的操作。与其他2个相同,通过在末尾添加KTS扩展名来重命名文件。然后更改以下内容:

plugins {
id ‘com.android.application’
id ‘org.jetbrains.kotlin.android’
}

为了这:

plugins {
id(“com.android.application”)
id(“org.jetbrains.kotlin.android”)
}

同样,在 Android 定义部分中,为每个元素添加等号 (=),即代替:

android {
namespace ‘mx.dev1.deadpool’
compileSdk 33

defaultConfig {
    applicationId "mx.dev1.deadpool"
    minSdk 24
    targetSdk 33
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = '1.8'
}

}

保留这一点:

android {
namespace = “mx.dev1.foo”
compileSdk = 33

defaultConfig {
    applicationId = "mx.dev1.foo"
    minSdk = 24
    targetSdk = 33
    versionCode = 1
    versionName = "1.0"

    testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        isMinifyEnabled = false
        proguardFiles (
            getDefaultProguardFile("proguard-android-optimize.txt"),
            "proguard-rules.pro"
        )
    }
}
compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
    jvmTarget = "1.8"
}

}

最后,将实现的名称括在括号中,以便它们改为:

dependencies {

implementation 'androidx.core:core-ktx:1.8.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

}

剩下的是:

dependencies {
implementation(“androidx.core:core-ktx:1.8.0”)
implementation(“androidx.appcompat:appcompat:1.4.1”)
implementation(“com.google.android.material:material:1.5.0”)
implementation(“androidx.constraintlayout:constraintlayout:2.1.3”)
implementation(“androidx.navigation:navigation-fragment-ktx:2.5.3”)
implementation(“androidx.navigation:navigation-ui-ktx:2.5.3”)
implementation(“androidx.legacy:legacy-support-v4:1.0.0”)
implementation(“androidx.lifecycle:lifecycle-livedata-ktx:2.6.1”)
implementation(“androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1”)
testImplementation(“junit:junit:4.13.2”)
androidTestImplementation(“androidx.test.ext:junit:1.1.3”)
androidTestImplementation(“androidx.test.espresso:espresso-core:3.4.0”)
}

(最佳实践:目前,我将依赖项版本保留为“硬编码”,但始终将它们放在附加变量中,在本例中为步骤 2 中的附加变量。)

现在,完成后,同步您的项目。

这样,您就可以更新您的项目,使其包含 KTS,并能够享受它的好处,并保持您的应用程序更新。

我希望本教程对您有用,如果是的话,请与更多人分享,以便他们可以看到我将在这个小博客中为您带来的更多内容。

快乐编码!

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐