替换清单 intent-filter 以扩展 class 风味

Replace manifest intent-filter for extended class in flavor

在我的应用中,flavor Lite 有自己的清单,并用 SplashActivityLite 覆盖了主要的 SplashActivity。主清单有一个用于 SplashActivity 的启动器意图过滤器。但是由于 SplashActivityLite 也有一个启动器 intent-filter,因此安装了 2 个应用程序图标。

我尝试将 tools:node="replace" 和 tools:node="merge" 添加到 activity 标签 SplashActivityLite。 我尝试将 tools:node="replace" 添加到 intent-filter 中的每个属性(操作和类别标签)。

当 class 名称不同时,如何覆盖主清单的 Intent 过滤器?

鉴于您的评论,您的目标似乎是针对这种风格的合并清单,其中 SplashActivityLite 存在但 SplashActivity 不存在。

在 flavor 的清单中,我认为你需要有两个 <activity> 元素(至少,就与此问题的相关性而言):

  • 一个人会指向 SplashActivityLite 并且是正常的,而你的 MAIN/LAUNCHER <intent-filter>

  • 另一个将指向 SplashActivity 并让 tools:node="remove" 从合并的清单中删除它

或者,您可以:

  • 在 flavor

  • 中有 SplashActivityLite 正常清单条目
  • main中,在SplashActivity

  • 上有android:enabled="@bool/useMainSplash"
  • main中,定义useMainSplashtrue

  • flavor中,定义useMainSplashfalse

这将保留 SplashActivity 的清单条目,但将其禁用以使其无法启动。

在任何一种方法中,SplashActivity class 都应该不受影响,因此 SplashActivityLite 可以毫无问题地扩展它。