Android:âadiosGroovy! Migrar Kotlin Nuestro Build.Gradle
#教程 #spanish #kotlin #android

我的孩子们,今天有点忙,但是我已经躺在床上了,我有能力能够在我们在Android开发中长期以来的主题上写一些台词:迁移构建文件。 。毕业于Kotlin。

最近,在Google文档中,已通知Kotlin脚本(KTS)将是默认情况下的语言,现在以依赖关系同步,并且从以下版本的Android Studio中,此过程将在新应用中默认情况下。 ,因此这个小教程可以将一个小型的“机动项目”迁移到KTS。

KTS?

kts是Kotlin脚本的Acrosem,在Groovy和Kotlin之间的语言迁移中,并不意味着我们将改变Android上图书馆库的导入数量,这将继续与毕业有关。对于新的,Gradle是应用程序的构造工具和与各种编程语言兼容的例程自动化;这是由Java建造的,当Android Kit Kat到达(或更早)时,它是Anti -SubSubstitute。

KT文件和KTS文件之间存在几个差异,其中之一是KT文件由Kotlin的编译器解释,而Kotlin的脚本支持的KTS则不需要以前的编译(您不需要以前的编译(您是javascript吗?)在这种情况下,这是毕业生将如何考虑它而无需以前进行编译。

有很多吗?

1.更改设置。

第一个是更改文件,添加 .kts 扩展到文件,并具有以下行:

include ':app'

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

include("app")

您不必在此文件中做更多的事情,即使您想尝试它,也可以同步单位。现在,重要的是不要使用单个引号('),因为Kotlin会将其解释为字符并标记您的错误。始终尝试在字符链中使用引号(“),以使您没有问题。

2.更改构建。

现在,也这样做以更改build.graleraãz中的文件名,然后更改以下内容:

如果您分配了版本变量(在Ext节点中)执行以下操作。更改以下内容:

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 "org.jetbrains.kotlin.android:$androidKotlinPlugin"
}

到这个

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

,我们将准备好此文件,现在是时候搬到文件(或文件)build。

3.更改构建。

在这种情况下,我们将更改 app 之一,在这种情况下,如果您有更多的薄荷,则必须对其余部分进行相同的操作。与其他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一起使用并享受其好处,因此您可以保持更新的申请。

我希望本教程为您服务,并与最多的乐队堆肥,以便他们可以看到更多的内容,这些内容将带入这个小博客。

快乐编码!