原因:androidx.navigation.safeargs只能与androidx项目一起使用
Cause: androidx.navigation.safeargs can only be used with an androidx project
我遇到名为 safeargs
的导航组件的问题。
我在构建 gradle 中使用了 classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.0.0'
。
在 app/build.gradle
中应用插件 androidx.navigation.safeargs.kotlin
时,出现以下错误:
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'
}
根据 Migrate to AndroidX,您的 gradle.properties
文件必须包含以下行:
android.useAndroidX=true
android.enableJetifier=true
第一行 android.useAndroidX=true
是 androidx.navigation.safeargs.kotlin
用来确保您使用的是 AndroidX 项目(它也被 [=19= 中的其他工具使用) ] Studio 生成正确的类,比如当你正在使用任何模板时)。
另一件要记住的事情是 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'
将classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
放入您的
项目 build.gradle 在 buildscript.dependencies
部分。
但是把 apply plugin: 'androidx.navigation.safeargs'
放到你的 app build.gradle.
我认为有一个错误。如果您的问题仍然存在,您可以像这样尝试。它对我也有用。
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin'
如果您在 Gradle 属性文件中添加了以下行,那么没问题
android.useAndroidX=true
android.enableJetifier=true
请将此行添加到您的项目级别 build.gradle
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
或当前更新版本。
解决方案
在应用程序(如果尚不存在)文件夹中创建 gradle.properties
文件,并将此示例文件的内容添加到其中。同步你的项目,它对我有用。
Example gradle.properties File
镇痛丸:)
如果你有多个模块,你必须将 classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
放入项目根目录中的 build.graddle
,而不是模块中的那个。然后就可以在模块中使用id "androidx.navigation.safeargs"
.
唯一对我有用的是。
在项目的 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'
}
我遇到名为 safeargs
的导航组件的问题。
我在构建 gradle 中使用了 classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.0.0'
。
在 app/build.gradle
中应用插件 androidx.navigation.safeargs.kotlin
时,出现以下错误:
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'
}
根据 Migrate to AndroidX,您的 gradle.properties
文件必须包含以下行:
android.useAndroidX=true
android.enableJetifier=true
第一行 android.useAndroidX=true
是 androidx.navigation.safeargs.kotlin
用来确保您使用的是 AndroidX 项目(它也被 [=19= 中的其他工具使用) ] Studio 生成正确的类,比如当你正在使用任何模板时)。
另一件要记住的事情是 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'
将classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0"
放入您的
项目 build.gradle 在 buildscript.dependencies
部分。
但是把 apply plugin: 'androidx.navigation.safeargs'
放到你的 app build.gradle.
我认为有一个错误。如果您的问题仍然存在,您可以像这样尝试。它对我也有用。
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'androidx.navigation.safeargs.kotlin'
如果您在 Gradle 属性文件中添加了以下行,那么没问题
android.useAndroidX=true
android.enableJetifier=true
请将此行添加到您的项目级别 build.gradle
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
或当前更新版本。
解决方案
在应用程序(如果尚不存在)文件夹中创建 gradle.properties
文件,并将此示例文件的内容添加到其中。同步你的项目,它对我有用。
Example gradle.properties File
镇痛丸:)
如果你有多个模块,你必须将 classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5"
放入项目根目录中的 build.graddle
,而不是模块中的那个。然后就可以在模块中使用id "androidx.navigation.safeargs"
.
唯一对我有用的是。
在项目的 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'
}