'Cause: androidx.navigation.safeargs can only be used with an androidx project
I am facing issue with navigation component called safeargs
.
I have used classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.0.0'
in build gradle.
While applying plugin androidx.navigation.safeargs.kotlin
in app/build.gradle
, I am getting following error:
Cause: androidx.navigation.safeargs can only be used with an androidx project
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'
}
Solution 1:[1]
As per the Migrate to AndroidX, your gradle.properties
file must contain the following lines:
android.useAndroidX=true
android.enableJetifier=true
That first line, android.useAndroidX=true
, is what the androidx.navigation.safeargs.kotlin
uses to ensure you are using an AndroidX project (it is also used by other tools in Android Studio to generate the right classes, such as when you are using any of the templates).
Solution 2:[2]
One other thing to remember is that apply plugin:"androidx.navigation.safeargs.kotlin"
shouldn't be the top most apply
on build.gradle.
This doesn't work:
apply plugin: 'androidx.navigation.safeargs.kotlin'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
This works:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'androidx.navigation.safeargs.kotlin'
Solution 3:[3]
Put classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
to your
project build.gradle in buildscript.dependencies
section.
But put apply plugin: 'androidx.navigation.safeargs'
to your app build.gradle.
Solution 4:[4]
I think there is a bug. If your problem continues, you can try it like this. It worked for me too.
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin'
Solution 5:[5]
If you have added the below lines in Gradle properties file then its okay
android.useAndroidX=true
android.enableJetifier=true
Please add this line to your project-level build.gradle
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
or current updated version.
Solution 6:[6]
Solution
Create gradle.properties
file inside app (if not exist already) folder and add the content of this example file into it. Sync your project and it worked for me.
Example gradle.properties File
Chill Pill :)
Solution 7:[7]
If you have multiple modules, you have to put the classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
into build.graddle
in the root of project, not the one in the module. Then you can use id "androidx.navigation.safeargs"
in the module.
Solution 8:[8]
The only thing that worked for me was.
In top of build.gradle file for the project:
buildscript {
repositories {
google()
}
dependencies {
def nav_version = "2.4.2"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
In the same file under plugins add:
plugins {
...
id 'androidx.navigation.safeargs.kotlin' version '2.4.2' apply false
}
In the build.gradle file for Module, under plugins add:
plugins {
...
id 'androidx.navigation.safeargs.kotlin'
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | ianhanniballake |
Solution 2 | Diego Oliveira |
Solution 3 | James Bond |
Solution 4 | mrcoder |
Solution 5 | Mahabub Karim |
Solution 6 | Ali Akram |
Solution 7 | skorpilvaclav |
Solution 8 | Simon |