【问题标题】:How to add SafeArgs to new top level Kotlin gradle如何将 SafeArgs 添加到新的顶级 Kotlin gradle
【发布时间】:2022-06-17 15:46:27
【问题描述】:

我将使用带有片段的导航框架,但在依赖步骤中,当我尝试从文档中添加 SafeArgs 时,我发现新的顶级 gradle 文件与文档不同,因此我无法添加它。您能解释一下如何将 SafeArgs 添加到新的 kotlin 顶级 gradle 文件吗?

我的顶级 gradle 文件:

plugins {
id 'com.android.application' version '7.1.2' apply false
id 'com.android.library' version '7.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.10' apply false} 


task clean(type: Delete) {
delete rootProject.buildDir}

文档顶级 Gradle:

buildscript {
repositories {
    google()
}
dependencies {
    val nav_version = "2.4.1"
    classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
}}

提前致谢。

【问题讨论】:

    标签: kotlin gradle navigation android-safe-args


    【解决方案1】:
    1. 转到 setting.gradle 并将此代码复制到 PluginManagement 块中:

              plugins{
                  id 'androidx.navigation'
              }
      
              resolutionStrategy {
      
                  eachPlugin {
      
                     if (requested.id.id == 'androidx.navigation') {
                        useModule("androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5")
                   }
                  }
              }
      
    2. 在 build.gradle(Project) 级别,转到插件:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    plugins {
        id 'com.android.application' version '7.1.3' apply false
        id 'com.android.library' version '7.1.3' apply false
        id 'org.jetbrains.kotlin.android' version '1.6.20' apply false
        id 'androidx.navigation' version '2.3.5' apply false
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    
    1. 在 build.gradle(:app) 级别,转到插件:

         plugins {
          id 'kotlin-kapt'
          id 'androidx.navigation.safeargs.kotlin'
      }
      
    2. 添加依赖:

      // Kotlin
       implementation("androidx.navigation:navigation-fragment-ktx:2.4.2")
       implementation("androidx.navigation:navigation-ui-ktx:2.4.2")
      

    【讨论】:

    • Hilt 已经发布了一个插件标记工件,因此您不需要resolutionStrategy。
    • 这个 gradle 每年为 android 构建脚本会越来越疯狂。我想念蚂蚁
    【解决方案2】:

    您的顶级(项目级别)Gradle 文件位于 Groovy 中,而文档位于 KotlinScript 中。您需要将文档代码复制并粘贴到顶级 Gradle 文件中,并进行一些更改,如下所示:

    buildscript {
        repositories {
            google()
        }
        dependencies {
            nav_version = "2.4.1"
            classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
        }
    }
    

    另外,请考虑将 plugins 定义移动到您的应用级 Gradle 文件中。

    【讨论】:

    【解决方案3】:

    只需在您的顶级 Gradle 插件块中添加以下内容

    id 'androidx.navigation.safeargs' version '2.4.2' apply false
    

    如果您的项目是纯 Kotlin,请在您的应用 Gradle 中添加以下内容

    plugins {
      id 'androidx.navigation.safeargs.kotlin'
    }
    

    else(对于纯 Java 或 Java 混合 Kotlin)添加

    plugins {
      id 'androidx.navigation.safeargs'
    }
    

    【讨论】:

      猜你喜欢
      • 2022-07-21
      • 2017-08-28
      • 2017-07-07
      • 2018-03-07
      • 1970-01-01
      • 2022-08-22
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      相关资源
      最近更新 更多