我们有一个使用 Deeplinks 的应用程序。我们还使用 Android Navigation 组件。
目前,我们在 outnavigation.xml 文件中配置我们的深层链接,这工作正常,但我们现在需要能够在构建时基于设置的环境变量添加另一个深层链接。
我尝试在 build.gradle 中设置字符串资源并在 navigation.xml 中引用这些资源。
我还尝试在 navigation.xml 中设置占位符,但无法替换它,因为它已经被解析为 URI。
我还尝试在 Manifest 中使用占位符设置直接意图过滤器,这将起作用,但我们失去了导航组件的良好路由。
目前,我们在 out navigation.xml 文件中配置我们的深层链接,格式如下:
<deepLink
android:autoVerify="true"
app:uri="foo.bar.baz/pull/{quxArg}/{quuxArg}" />
我们现在需要能够在构建时基于一组 Envar 创建一个额外的 Deeplink。
例子:
DEEPLINK_ENVAR = "replacement.com"
构建.gradle:
manifestPlaceholders = [deeplink:DEEPLINK_ENVAR]
导航.xml:
<deepLink
android:autoVerify="true"
app:uri="${deeplink}/pull/{quxArg}/{quuxArg}" />
请注意,上述方法不起作用。
如果这只是 Manifest 中的一个意图过滤器,我们可以使用 Manifest 占位符来完成此任务并将它们设置在 app.gradle 中。然而,在 navigation.xml 中设置的深层链接被解析为 URI,并在替换之前销毁所有占位符。
有没有人尝试过类似的事情?我试图避免必须运行预构建脚本来直接对导航文件进行模板化。
期望的结果:
我希望能够在构建时添加一个额外的深层链接(实际上是 4 个到不同的目的地),同时使用 Android 导航组件。