【问题标题】:Cause: androidx.navigation.safeargs can only be used with an androidx project原因:androidx.navigation.safeargs 只能用于 androidx 项目
【发布时间】:2019-04-19 04:20:50
【问题描述】:

我遇到了名为 safeargs 的导航组件的问题。

我在 build gradle 中使用了classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.0.0'

app/build.gradle 中应用插件androidx.navigation.safeargs.kotlin 时,出现以下错误:

原因:androidx.navigation.safeargs 只能与 androidx 一起使用 项目

app/build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

apply plugin: 'androidx.navigation.safeargs.kotlin'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.test.navigationexample"
        minSdkVersion 14
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0-alpha04'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha4'
    implementation 'com.google.android.material:material:1.1.0-alpha05'
    implementation 'androidx.navigation:navigation-fragment-ktx:2.0.0'
    implementation 'androidx.navigation:navigation-ui-ktx:2.0.0'
}

【问题讨论】:

  • 你能发布你的app/build.gradle吗?
  • @ianhanniballake 添加了build.gradle 文件。请检查一下。

标签: android kotlin android-architecture-components android-architecture-navigation android-safe-args


【解决方案1】:

根据Migrate to AndroidX,您的gradle.properties 文件必须包含以下行:

android.useAndroidX=true
android.enableJetifier=true

第一行 android.useAndroidX=trueandroidx.navigation.safeargs.kotlin 用来确保您使用的是 AndroidX 项目(Android Studio 中的其他工具也使用它来生成正确的类,例如当您使用任何模板)。

【讨论】:

  • 我的gradle.properties 中已经有了这个,但我仍然面临这个问题。有什么线索吗?
【解决方案2】:

要记住的另一件事是 apply plugin:"androidx.navigation.safeargs.kotlin" 不应该是 build.gradle 上最高的 apply

这不起作用:

apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

这行得通:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs.kotlin'

【讨论】:

    【解决方案3】:

    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0" 发送到您的 项目 build.gradle 在buildscript.dependencies 部分。

    但是将apply plugin: 'androidx.navigation.safeargs' 放到你的app build.gradle。

    【讨论】:

      【解决方案4】:

      我认为有一个错误。如果您的问题仍然存在,您可以像这样尝试。它也对我有用。

      id 'com.android.application'
      id 'kotlin-android'
      id 'kotlin-android-extensions'
      id 'androidx.navigation.safeargs.kotlin'
      

      【讨论】:

      • 如果您只是将 'apply plugin:' 替换为 'id',则会出现此错误。记住现在每个人都知道你在说什么。这需要包含在“插件{}”中,请参阅stackoverflow.com/a/55753364/346309
      【解决方案5】:

      如果您在 Gradle 属性文件中添加了以下行,则可以

      android.useAndroidX=true
      android.enableJetifier=true
      

      请将此行添加到您的项目级 build.gradle

      classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
      

      或当前的更新版本。

      【讨论】:

        【解决方案6】:

        解决方案

        在 app(如果尚不存在)文件夹中创建 gradle.properties 文件,并将此示例文件的内容添加到其中。同步你的项目,它对我有用。

        Example gradle.properties File

        镇静丸:)

        【讨论】:

          【解决方案7】:

          如果您有多个模块,则必须将classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5" 放入项目根目录下的build.graddle,而不是模块中的那个。然后就可以在模块中使用id "androidx.navigation.safeargs"了。

          【讨论】:

            【解决方案8】:

            唯一对我有用的是。

            在项目的 build.gradle 文件顶部:

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

            在插件下的同一个文件中添加:

            plugins {
                ...
                id 'androidx.navigation.safeargs.kotlin' version '2.4.2' apply false
            }
            

            在模块的 build.gradle 文件中,在插件下添加:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-08
              • 2021-08-05
              • 1970-01-01
              • 2020-04-13
              • 1970-01-01
              • 1970-01-01
              • 2015-09-06
              • 2021-01-12
              相关资源
              最近更新 更多