【发布时间】:2019-12-21 02:31:57
【问题描述】:
我们有一个使用 Deeplinks 的应用程序。我们还使用 Android Navigation 组件。
目前我们在导航.xml 文件中配置我们的深层链接,这工作正常,但我们现在需要能够在构建时基于设置的环境变量添加另一个深层链接。
我尝试在 build.gradle 中设置字符串资源并在 navigation.xml 中引用这些资源。
我也尝试在 navigation.xml 中设置一个占位符,但无法替换它,因为它已被解析为 URI。
我还尝试在 Manifest 中使用占位符设置直接意图过滤器,这将起作用,但我们失去了导航组件的良好路由。
目前我们在 out navigation.xml 文件中配置我们的 Deeplinks,格式如下:
<deepLink
android:autoVerify="true"
app:uri="foo.bar.baz/pull/{quxArg}/{quuxArg}" />
我们现在需要能够在构建时基于一组 Envar 创建额外的 Deeplink。
示例:
DEEPLINK_ENVAR = "replacement.com"
Build.gradle:
manifestPlaceholders = [deeplink:DEEPLINK_ENVAR]
navigation.xml:
<deepLink
android:autoVerify="true"
app:uri="${deeplink}/pull/{quxArg}/{quuxArg}" />
请注意上述方法不起作用。
如果这只是 Manifest 中的一个意图过滤器,我们可以使用 Manifest 占位符来完成此任务并将它们设置在 app.gradle 中。然而,在 navigation.xml 中设置的深层链接被解析为 URI,并在替换之前销毁所有占位符。
有没有人尝试过类似的事情?我试图避免必须运行预构建脚本来直接对导航文件进行模板化。
期望的结果:
我希望能够在构建时添加额外的深层链接(实际上是 4 个到不同的目的地),同时使用 Android 导航组件。
【问题讨论】:
-
你能解决这个问题吗?我陷入了同样的境地。我想为深层链接提供动态方案,我可以通过编程方式添加。
-
这个问题你解决了吗??我有同样的问题
-
@Flint 你能解决这个问题吗?
-
@Flint,这里有更新吗?我的“备份”解决方案是将整个图表复制到不同的产品风格/构建类型文件夹中,但维护起来会很糟糕......
标签: android placeholder android-navigation android-deep-link