Reputation: 676
I m gonna use Navigation Framework with fragments but at the dependency step, when i tried to add SafeArgs from documentation i see that the new top level gradle file is different from documentation so i can't add it. Can you explain how to add SafeArgs to new kotlin top level gradle file ?
My top level gradle file :
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}
Documentation Top Level Gradle :
buildscript {
repositories {
google()
}
dependencies {
val nav_version = "2.4.1"
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
}}
Thanks in advance.
Upvotes: 12
Views: 6233
Reputation: 1171
At top build.gradle.kts
alias(libs.plugins.androidx.navigation.safeargs) apply false
libs.versions.toml
androidx-navigation = "2.7.7"
[plugins]
androidx-navigation-safeargs = { id = "androidx.navigation.safeargs.kotlin", version.ref = "androidx-navigation" }
build.gradle.kts at module app
alias(libs.plugins.androidx.navigation.safeargs)
Upvotes: 10
Reputation: 175
Just two steps
in build.gradle.kts (Project <appName>
), add this line in plugin block:
plugins {
id("androidx.navigation.safeargs") version "2.5.3" apply false
}
Note: last version till now is 2.7.7
but I use 2.5.3
as it's stable one
in build.gradle.kts (Module :app
), add this line in plugins block:
plugins {
id("androidx.navigation.safeargs.kotlin") // for pure kotlin
id("androidx.navigation.safeargs") // for java or mixed java and kotlin
}
Upvotes: 1
Reputation: 1272
Goto setting.gradle and copy past this code in PluginManagement block:
plugins{
id 'androidx.navigation'
}
resolutionStrategy {
eachPlugin {
if (requested.id.id == 'androidx.navigation') {
useModule("androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5")
}
}
}
In build.gradle(Project) Level, goto plugins:
// 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
}
In build.gradle(:app) Level, goto plugins:
plugins {
id 'kotlin-kapt'
id 'androidx.navigation.safeargs.kotlin'
}
add dependencies:
// Kotlin
implementation("androidx.navigation:navigation-fragment-ktx:2.4.2")
implementation("androidx.navigation:navigation-ui-ktx:2.4.2")
Upvotes: 3
Reputation: 581
just add below in your top level Gradle plugin block
id 'androidx.navigation.safeargs' version '2.4.2' apply false
then if your project is pure Kotlin, add below in your app Gradle
plugins {
id 'androidx.navigation.safeargs.kotlin'
}
else (for pure Java or Java mixed Kotlin) add
plugins {
id 'androidx.navigation.safeargs'
}
Upvotes: 30
Reputation: 91
Your top level (project level) Gradle file is in Groovy, while the documentation is in KotlinScript. You need to copy and paste the document code in your top level Gradle file with a few changes like below:
buildscript {
repositories {
google()
}
dependencies {
nav_version = "2.4.1"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
Also, consider moving plugins
definition to your app level Gradle file.
Upvotes: 1