在任何人问之前,我已经阅读了所有这些问题,没有一个解决了我的问题:这是一个很好的例子。
我目前正在学习Android应用程序开发,我一直在遵循Android开发者网站上的第一个教程。我使用“基本活动”模板创建了我的项目(按照指示)。
在上面链接的页面的步骤5中,它指出要通过执行以下操作来启用安全参数:
打开**Gradle脚本〉build.gradle(模块:My First App)在buildscript
部分中找到dependencies
部分,并在其他类路径条目之后添加以下行:def nav_version = "2.3.0-alpha02"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
打开Gradle脚本〉build.gradle(模块:app)**在以apply plugin开始的其他行下面添加一行以启用SafeArgs:apply plugin: 'androidx.navigation.safeargs.kotlin'
Android Studio应显示一条关于Gradle文件正在更改的消息。单击右侧的立即同步。几分钟后,Android Studio应在同步选项卡中显示一条消息,说明同步成功。
选择Build〉Make Project。这应该会重建所有内容,以便Android Studio可以找到FirstFragmentDirections。
不幸的是,我的Android Studio版本中的“Basic Activity”模板(见下文)的结构似乎不支持说明中的更改。
Android Studio Dolphin | 2021.3.1 Patch 1
Build #AI-213.7172.25.2113.9123335, built on September 30, 2022
Runtime version: 11.0.13+0-b1751.21-8125866 amd64
首先,它说“在buildscript部分中找到dependencies部分”。在我的build.gradle (:app)
文件中(我甚至不确定这是不是正确的文件),只有一个包含implementation
条目的顶级dependencies部分。添加classpath
条目似乎不正确。
接下来,它说要将apply plugin
条目添加到我的(Module: app)
文件中“就在以apply plugin
开始的其他行下面“。没有这样的行存在,这让人怀疑教程已经过时了。
经过一番搜索,我得出了一个结论,我需要以不同的方式添加safeargs。在我的build.gradle
项目文件中,我将其设置为如下所示(这是完整的文件):
plugins {
id 'com.android.application' version '7.3.1' apply false
id 'com.android.library' version '7.3.1' apply false
id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
id 'androidx.navigation.safeargs.kotlin' version '2.5.3' apply false // I added this
}
我的build.gradle
模块文件的top如下所示:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id "androidx.navigation.safeargs.kotlin" // I added this
}
这些文件没有其他更改。
同步工作正常,但当我尝试重建时遇到问题(即使我先清理)。我发现在checkDebugDuplicateClasses检查失败后,我总是得到下面的错误:
Duplicate class javax.activation.ActivationDataFlavor found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandInfo found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
Duplicate class javax.activation.CommandInfo$Beans found in modules jakarta.activation-api-1.2.1 (jakarta.activation:jakarta.activation-api:1.2.1) and javax.activation-1.2.0 (com.sun.activation:javax.activation:1.2.0)
[...]
Duplicate class org.xmlpull.v1.XmlPullParser found in the following modules: kxml2-2.3.0 (net.sf.kxml:kxml2:2.3.0), xmlpull-1.1.3.1 (xmlpull:xmlpull:1.1.3.1) and xpp3-1.1.4c (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParserException found in the following modules: kxml2-2.3.0 (net.sf.kxml:kxml2:2.3.0), xmlpull-1.1.3.1 (xmlpull:xmlpull:1.1.3.1) and xpp3-1.1.4c (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlPullParserFactory found in the following modules: kxml2-2.3.0 (net.sf.kxml:kxml2:2.3.0), xmlpull-1.1.3.1 (xmlpull:xmlpull:1.1.3.1) and xpp3-1.1.4c (xpp3:xpp3:1.1.4c)
Duplicate class org.xmlpull.v1.XmlSerializer found in the following modules: kxml2-2.3.0 (net.sf.kxml:kxml2:2.3.0), xmlpull-1.1.3.1 (xmlpull:xmlpull:1.1.3.1) and xpp3-1.1.4c (xpp3:xpp3:1.1.4c)
Go to the documentation to learn how to Fix dependency resolution errors.
目前还不清楚从这里需要做什么。我根本无法在模拟器中运行应用程序,因为构建完全失败。任何建议都将不胜感激。
1条答案
按热度按时间b5buobof1#
我不知道我到底是什么时候做的,但是我对我的
build.gradle
应用程序文件的结尾做了一个修改,所以它看起来像下面这样。我在这里指出的这条线是问题的根源。这一定是导致了这条线沿着的某个地方出现了重叠。删除这条线应该可以解决这个问题。
我找到了这个github repo useful(link to internet archive, with relevant files archived)。
build.gradle
和app/build.gradle
文件是你应该看的地方。