ディープリンクを利用するアプリがあります。また、Android ナビゲーション コンポーネントも使用します。
現在、out navigation.xml ファイルでディープリンクを構成しており、これは正常に機能しますが、設定された環境変数に基づいてビルド時に別のディープリンクを追加できるようにする必要があります。
build.gradle で String リソースを設定し、navigation.xml でこれらを参照しようとしました。
また、navigation.xml にプレースホルダーを設定しようとしましたが、既に URI として解析されているため、置き換えることはできません。
また、マニフェストでプレースホルダーを使用してダイレクト インテント フィルターを設定しようとしましたが、これは機能しますが、ナビゲーション コンポーネントからの優れたルーティングが失われます。
現在、out navigation.xml ファイルのディープリンクを次の形式で構成しています。
<deepLink
android:autoVerify="true"
app:uri="foo.bar.baz/pull/{quxArg}/{quuxArg}" />
設定された Envar に基づいて、ビルド時に追加のディープリンクを作成できるようにする必要があります。
例:
DEEPLINK_ENVAR = "replacement.com"
Build.gradle:
manifestPlaceholders = [deeplink:DEEPLINK_ENVAR]
ナビゲーション.xml:
<deepLink
android:autoVerify="true"
app:uri="${deeplink}/pull/{quxArg}/{quuxArg}" />
上記は動作しませんのでご注意ください。
これがマニフェストの単なるインテント フィルターである場合は、マニフェスト プレースホルダーを使用してこのタスクを達成し、それらを app.gradle に設定できます。ただし、navigation.xml で設定されたディープリンクは URI として解析され、置き換えられる前にプレースホルダーが破棄されます。
誰かが似たようなことを試みましたか?ビルド前のスクリプトを実行して、ナビゲーション ファイルを直接テンプレート化する必要がないようにしています。
望ましい結果:
Androidナビゲーションコンポーネントを利用しながら、ビルド時に追加のディープリンク(実際には異なる宛先への4つ)を追加できるようにしたいと考えています。