SafeArgs 未在多模块项目上生成方向/参数类

Kor*_*lis 10 navigation android android-jetpack

我创建了一个空项目来试用导航组件。我想看看它在多模块项目中的表现(一个具有大部分依赖项的通用模块,加上包含应用程序不同部分的:app模块,以及实现所有模块的模块)。

顶级 gradle 文件具有如下依赖项:

dependencies {
    classpath "com.android.tools.build:gradle:3.6.1"
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-alpha04"
}
Run Code Online (Sandbox Code Playgroud)

通用模块具有以下依赖项(除其他外):

dependencies {
    …
    api "androidx.navigation:navigation-fragment-ktx:2.2.1"
    api "androidx.navigation:navigation-ui-ktx:2.2.1"
    api "androidx.navigation:navigation-dynamic-features-fragment:2.3.0-alpha04"
    …
}
Run Code Online (Sandbox Code Playgroud)

并且绝对所有模块都在顶部应用了这个插件:

apply plugin: "androidx.navigation.safeargs.kotlin"
Run Code Online (Sandbox Code Playgroud)

现在,每个“ui 模块”中都有片段,只有:app一个实现了main_graph.xml对它们的引用。一个例子是:

<fragment
    android:id="@+id/registerFragment"
    android:name="example.register.RegisterFragment"
    android:label="RegisterFragment">
    <action
        android:id="@+id/action_registerFragment_to_loginFragment"
        app:destination="@id/loginFragment" />
</fragment>
Run Code Online (Sandbox Code Playgroud)

完成这一切后,一个好的 Clean Project + Rebuild Project 就完成了。

对我来说,这是有道理的。但是,当我尝试调用理论上自动生成的文件时,RegisterFragmentDirections它不在那里,不在特定的子模块中,不在主模块中。该NavDirections可以发现(这样的依赖关系在某种程度上是工作),而不是产生的。

我已经尝试在每个模块中实现所有依赖项,将导航版本回滚到以前的 alpha 版本……没有成功。

Mar*_*pez -1

尝试在主导航图中包含标签并引用您需要的动态功能模块。

 <include-dynamic
        android:id="@+id/included_nav"
        app:graphPackage="org.example.dfm"
        app:graphResName="nav_tab"
        app:moduleName="example_dfm" />
    
Run Code Online (Sandbox Code Playgroud)