我如何正确实施 safeargs?
how do i correctly implement safeargs?
我正在尝试按照教程来实施和使用房间数据库 YouTube-link。
我的问题是,我的 gradle 文件与视频中显示的文件相比看起来大不相同,以至于我不知道将 id "navigation.safeargs.kotlin"
和
放在哪里
classpath "androidx.navigation-safe-args-gradle-plugin:2.3.0-rc01"
或我可能需要的任何其他东西。我试了很多地方都没有用,我真的找不到答案,所以如果有人知道,请帮助我。
build.gradle(项目:...):
plugins {
id 'com.android.application' version '7.2.0' apply false
id 'com.android.library' version '7.2.0' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(模块:...):
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example. ..."
minSdk 26
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.6.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation fileTree(dir: "libs", include: ["*.jar"])
// Room components
implementation "androidx.room:room-runtime:2.4.2"
kapt "androidx.room:room-compiler:2.4.2"
implementation "androidx.room:room-ktx:2.4.2"
androidTestImplementation "androidx.room:room-testing:2.4.2"
// Lifecycle components
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-common-java8:2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
// Kotlin components
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2"
}
settings.gradle(...):
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "..."
include ':app'
开始 straight to the source IMO
Top-level build.gradle
:
buildscript {
repositories {
google()
}
dependencies {
val nav_version = "2.4.2"
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
}
}
App/module build.gradle
:
plugins {
id("androidx.navigation.safeargs")
// or for Kotlin-only projects
id("androidx.navigation.safeargs.kotlin")
}
因此,在您的 top-level 文件中,您需要 repositories
块中的 google()
以及 dependencies
块中的类路径。如果您没有这些块之一,只需创建它 - 它们位于 buildscript
块内,看到了吗? nav_version
val
只是一个变量,因此您可以通过引用它使所有导航组件使用相同的版本,并且实际版本号仅在一个地方设置。如果你愿意,你可以只在依赖语句中写下数字 - 不过要确保所有导航组件都使用相同的版本!
将 id("androidx.navigation.safeargs")
行粘贴到模块的 build
文件的 plugins
块中。顺序有时对其中一些很重要,因此请在底部尝试。语法与它们在当前文件中的外观略有不同,但这只是另一种编写方式 - 都可以,您可以混合搭配
使用这个:
id 'androidx.navigation.safeargs.kotlin' version '2.4.0' apply false
我正在尝试按照教程来实施和使用房间数据库 YouTube-link。
我的问题是,我的 gradle 文件与视频中显示的文件相比看起来大不相同,以至于我不知道将 id "navigation.safeargs.kotlin"
和
classpath "androidx.navigation-safe-args-gradle-plugin:2.3.0-rc01"
或我可能需要的任何其他东西。我试了很多地方都没有用,我真的找不到答案,所以如果有人知道,请帮助我。
build.gradle(项目:...):
plugins {
id 'com.android.application' version '7.2.0' apply false
id 'com.android.library' version '7.2.0' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle(模块:...):
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example. ..."
minSdk 26
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
dependencies {
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.6.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation 'androidx.navigation:navigation-fragment-ktx:2.4.2'
implementation 'androidx.navigation:navigation-ui-ktx:2.4.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation fileTree(dir: "libs", include: ["*.jar"])
// Room components
implementation "androidx.room:room-runtime:2.4.2"
kapt "androidx.room:room-compiler:2.4.2"
implementation "androidx.room:room-ktx:2.4.2"
androidTestImplementation "androidx.room:room-testing:2.4.2"
// Lifecycle components
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation "androidx.lifecycle:lifecycle-common-java8:2.4.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1"
// Kotlin components
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21"
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2"
api "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2"
}
settings.gradle(...):
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "..."
include ':app'
开始 straight to the source IMO
Top-level build.gradle
:
buildscript {
repositories {
google()
}
dependencies {
val nav_version = "2.4.2"
classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
}
}
App/module build.gradle
:
plugins {
id("androidx.navigation.safeargs")
// or for Kotlin-only projects
id("androidx.navigation.safeargs.kotlin")
}
因此,在您的 top-level 文件中,您需要 repositories
块中的 google()
以及 dependencies
块中的类路径。如果您没有这些块之一,只需创建它 - 它们位于 buildscript
块内,看到了吗? nav_version
val
只是一个变量,因此您可以通过引用它使所有导航组件使用相同的版本,并且实际版本号仅在一个地方设置。如果你愿意,你可以只在依赖语句中写下数字 - 不过要确保所有导航组件都使用相同的版本!
将 id("androidx.navigation.safeargs")
行粘贴到模块的 build
文件的 plugins
块中。顺序有时对其中一些很重要,因此请在底部尝试。语法与它们在当前文件中的外观略有不同,但这只是另一种编写方式 - 都可以,您可以混合搭配
使用这个:
id 'androidx.navigation.safeargs.kotlin' version '2.4.0' apply false