SafeArgs не генерирует классы Directions / Args в многомодульном проекте - PullRequest
2 голосов
/ 29 марта 2020

Я создал пустой проект, чтобы опробовать компонент навигации. Я хотел посмотреть, как он будет себя вести с многомодульным проектом (один общий модуль с большинством зависимостей, плюс модули, которые будут содержать различные части приложения, и модуль :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"
}

Общий модуль имеет следующие зависимости (среди прочих):

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"
    …
}

И абсолютно все к модулям этот плагин применен сверху:

apply plugin: "androidx.navigation.safeargs.kotlin"

Теперь каждый «модуль пользовательского интерфейса» содержит фрагменты, и только в :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>

После того, как все это закончено, хороший проект Clean Project + Rebuild сделан.

Для меня это имеет смысл. Однако, когда я пытаюсь вызвать теоретически автоматически сгенерированный файл, RegisterFragmentDirections не существует, ни в указанном подмодуле c, ни в основном. NavDirections можно найти (поэтому зависимости как-то работают), но не сгенерированные.

Я попытался реализовать все зависимости в каждом модуле, откатив навигационную версию к предыдущим альфа-версиям. … Безуспешно.

...