具有多个风味的NavigationComponent

4
我在我的应用程序中使用NavigationComponent,现在我遇到了以下问题:
我有两个不同的风味(免费和付费版本),它们都使用位于主包中的相同的navigation.xml。当我想运行付费变量时,生成的方向文件中将出现以下错误:

e:AndroidStudioProjects/foo/app/build/generated/source/navigation-args/paid/debug/de/dk/fc/ui/knowledge/KnowledgeFragmentDirections.kt: (5, 24):未解析的引用:paid

e:AndroidStudioProjects/foo/app/build/generated/source/navigation-args/paid/debug/de/dk/fc/ui/knowledge/KnowledgeFragmentDirections.kt: (14, 41):未解析的引用:R

这是我的navigation.xml的一部分代码:
<fragment
        android:id="@+id/fragment_knowledge"
        android:name="de.dk.fc.ui.knowledge.KnowledgeFragment"
        tools:layout="@layout/fragment_knowledge">

        <action
            android:id="@+id/action_fragmentKnowledge_to_fragmentInfo"
            app:destination="@id/fragment_info" />

    </fragment>

我还在我的build.gradle文件中添加了以下代码行:

 sourceSets {
        getByName("main").java.srcDirs("build/generated/source/navigation-args")
    }

我的尝试:

  • 清理项目
  • 无效缓存
  • 将navigation.xml复制到每个flavor包中

你有什么想法来解决这个问题吗?


似乎您正在引用某些未包含在您的构建风格中的内容。您能否分享更多细节或者在您的导航XML中paid引用是什么? - hardartcore
2个回答

4

您是否已将 Android Gradle 插件升级到 7.2.0 版本并在出现此错误之前运行了建议的操作之一?其中之一是将包名从 Android 清单文件移动到构建文件中。

似乎这个更改会在项目中具有不同的应用程序 ID(就像您可能为不同的渠道拥有的那样)时,导航组件引起困难。

只需将包名重新放回清单文件中,它就应该可以正常工作。这应该至少暂时解决问题,直到导航组件可以处理这些更改。


0
如果您正在使用多模块项目,我建议为每个需要的功能/模块创建单独的导航图,如此处所示 MAD Skills navigation between modules。 在您的主要包导航图中使用标签 <include app:graph="@navigation/graph_name"/>来包含来自不同模块的图形
即使您已将包名称从清单移动到构建文件中,它也应该可以工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接