単一のアクティビティ構造と動的機能モジュール アプローチを備えたジェットパック ナビゲーション コンポーネントを使用して、アプリケーション モジュールを分離しています。今のところモジュールをオンデマンドにしたくないので、それらはすべてインストール ベース アプリ モジュールにインストールされます。私のアプリ モジュール ナビゲーション XML には、各動的モジュールを参照する 4 つの include-dynamic パーツがあります。
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/app_navigation_graph"
app:startDestination="@id/featurePaydarNavGraph">
<include-dynamic
android:id="@+id/featurePaydarNavGraph"
app:graphResName="feature_paydar_nav_graph"
app:moduleName="feature_paydar" />
<include-dynamic
android:id="@+id/featurePawintoNavGraph"
app:graphResName="feature_pawinto_nav_graph"
app:moduleName="feature_pawinto" />
<include-dynamic
android:id="@+id/featureToolsNavGraph"
app:graphResName="feature_tools_nav_graph"
app:moduleName="feature_tools" />
<include-dynamic
android:id="@+id/featureServicesNavGraph"
app:graphResName="feature_services_nav_graph"
app:moduleName="feature_services" />
</navigation>
モジュールの一部には接続があります。たとえば、ツール モジュールには、他のモジュールの他のフラグメントを読み取って移動する QR コード機能がありますNavManager
。
問題は、最初のモジュールからディープリンクを呼び出す前に 2 番目のモジュールに入らなかった場合、ディープリンクが見つからないというアプリケーションのクラッシュが発生することですが、2 番目のモジュールに入ってから最初のモジュールからディープリンクを呼び出すと、問題なく正常に動作します。したがって、ナビゲーションが動的モジュールのディープリンクを理解できるようにするために、何かをトリガーする必要があると思います。
次のリンク(制限セクション)の最後で、動的モジュールでディープリンクがサポートされていないことをグーグルが言及していることを私は知っています。
そのため、他のモジュールからのディープリンクを呼び出す前にターゲットモジュールが開いていたときに機能し、以前に開かれていないと機能しないことがわかりました。