Есть ли способ создать неявную диплинк в мультимодульном проекте Android с помощью компонента навигации - PullRequest
2 голосов
/ 29 апреля 2019

У меня есть многомодульный проект, где мне нужно обрабатывать глубокие ссылки в приложении.Глубокие ссылки могут быть на любой функциональный модуль со своим собственным графом навигации.Это проект с одним действием.

Мой проект включает в себя модули для функции 1, функции 2 и модуль основного приложения, который зависит от двух функциональных модулей.Каждый из этих модулей содержит свой собственный граф навигации для поддержки своих собственных потоков.Я пытаюсь создать неявную глубокую ссылку, как показано в документации

График навигации моего модуля приложения имеет вложенные графы функций 1 и 2, как показано ниже

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/navigation_main"
    app:startDestination="@id/start_destination"
    tools:ignore="UnusedNavigation">

    <include app:graph="@navigation/navigation_feature_one" />
    <include app:graph="@navigation/navigation_feature_two" />

Iиметь ссылку для функции, определенной в навигационном графе - navigation_feature_one

<navigation>
...
    <fragment android:id="@+id/featureOneFragment"
              android:name="com.app.featureone.presentation.SomeFragment"
              tools:layout="@layout/some_fragment"
              android:label="@string/title_some_fragment">
        <deepLink app:uri="www.example.com/featureone"/>
    </fragment>
</navigation>

В AndroidManifest я указал, что следует использовать основную навигацию с вложенными графиками

<activity
    android:name=".presentation.NavigationActivity"
    android:launchMode="singleTask"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:host="www.example.com"/>
        <data android:scheme="https"/>
        <data android:scheme="http"/>
    </intent-filter>
    <nav-graph android:value="@navigation/navigation_main" />
</activity>

IЯ ожидаю, что проект будет привязан к любому модулю приложения с помощью компонента навигации, но во время компиляции я получаю сообщение об ошибке, что включенные графики не могут быть найдены

Referenced navigation file with navigationXmlId = navigation_feature_one not found

1 Ответ

0 голосов
/ 30 апреля 2019

Похоже, что эта проблема может быть проявлением этой ошибки https://issuetracker.google.com/issues/112513722

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

// Copy these to the app module's build.gradle
task copyChildNavigationGraphs(type: Copy) {
    from '../feature-module/src/main/res/navigation'
    into 'src/main/res/navigation'
}
preBuild.dependsOn copyChildNavigationGraphs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...