Причина: androidx.navigation.safeargs можно использовать только с проектом androidx
Я столкнулся с проблемой с компонентом навигации под названием safeargs
,
я использовал classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.0.0'
в сборке градл.
При применении плагина androidx.navigation.safeargs.kotlin
в app/build.gradle
Я получаю следующую ошибку:
Причина: androidx.navigation.safeargs можно использовать только с проектом androidx
Приложение /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'
}
9 ответов
В соответствии с миграцией на AndroidX, ваш gradle.properties
Файл должен содержать следующие строки:
android.useAndroidX=true
android.enableJetifier=true
Эта первая строка, android.useAndroidX=true
это то, что androidx.navigation.safeargs.kotlin
используется, чтобы убедиться, что вы используете проект AndroidX (он также используется другими инструментами в Android Studio для генерации правильных классов, например, при использовании любого из шаблонов).
Еще одна вещь, которую следует помнить, это то, что apply plugin:"androidx.navigation.safeargs.kotlin"
не должен быть самым верхним apply
на build.gradle.
Это не работает:
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'
Единственное, что сработало для меня, было.
В верхней части файла 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'
}
Ставить classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
в вашпроект build.gradle вbuildscript.dependencies
раздел.
Но положите apply plugin: 'androidx.navigation.safeargs'
в ваше приложение build.gradle.
Думаю, это ошибка. Если проблема не исчезнет, попробуйте вот так. У меня это тоже сработало.
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin'
Решение
Создавать
Пример файла gradle.properties
Таблетка от холода :)
Если вы добавили следующие строки в файл свойств Gradle, тогда все в порядке
android.useAndroidX=true
android.enableJetifier=true
Добавьте эту строку в build.gradle на уровне проекта.
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
или текущая обновленная версия.
Вот полный блок плагинов:
плагины { id 'kotlin-kapt' id 'com.android.application' id 'org.jetbrains.kotlin.android'id 'androidx.navigation.safeargs.kotlin' }
убедитесь, что идентификатор «androidx.navigation.safeargs.kotlin» находится в последней нижней позиции… вот как я это сделал
Если у вас несколько модулей, вы должны поставить
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
в
build.graddle
в корне проекта, а не в модуле. Затем вы можете использовать
id "androidx.navigation.safeargs"
в модуле.