11

ディープリンクを利用するアプリがあります。また、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つ)を追加できるようにしたいと考えています。

4

2 に答える 2