【发布时间】:2016-02-29 00:57:13
【问题描述】:
我正在编写一个 SDK,并希望开发人员能够创建一个 activity-alias,其 targetActivity 设置为我的 SDK 中的一个活动。我这样做是因为我希望他们能够针对 SDK 中的特定活动自定义意图过滤器。如果在 sdk 的清单中有 ActivityX,我希望他们能够在 他们的应用清单中写一个像这样的activity-alias:
<activity-alias
android:name="abc"
android:targetActivity="ActivityX">
<intent-filter>
... user's custom intent filter
</intent-filter>
</activity-alias>
我遇到的问题是 targetActivity 有 restriction 它:
"... 必须匹配一个活动元素的 name 属性 在清单中的别名之前。”
这是一个问题,因为无论我将活动放在 sdk 清单中的什么位置,或者我将别名放在示例应用清单中的什么位置,别名总是出现在最终合并清单中的活动之前,从而导致 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误。
一个想法是在 sdk 清单中声明 ActivityX 之后放置一个没有意图过滤器的别名,并希望这两个别名将是 merged together 并保持在 sdk 别名的位置。但我不知道该怎么做。可能不起作用的一个原因是两个别名可能无法冲突。
您是否想过通过合并解决方案或其他技术来解决这个问题?
【问题讨论】:
-
Android 库在这种极端情况下非常有限。我明白你为什么要这样做。我不知道,但我建议您在 b.android.com 中发布作为对工具团队的功能请求
标签: android merge sdk alias aar