【问题标题】:android: allow creation of an activity-alias whose targetActivity is in an aar/sdkandroid:允许创建 targetActivity 在 aar/sdk 中的活动别名
【发布时间】: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>

我遇到的问题是 targetActivityrestriction 它:

"... 必须匹配一个活动元素的 name 属性 在清单中的别名之前。”

这是一个问题,因为无论我将活动放在 sdk 清单中的什么位置,或者我将别名放在示例应用清单中的什么位置,别名总是出现在最终合并清单中的活动之前,从而导致 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 错误。

一个想法是在 sdk 清单中声明 ActivityX 之后放置一个没有意图过滤器的别名,并希望这两个别名将是 merged together 并保持在 sdk 别名的位置。但我不知道该怎么做。可能不起作用的一个原因是两个别名可能无法冲突。

您是否想过通过合并解决方案或其他技术来解决这个问题?

【问题讨论】:

  • Android 库在这种极端情况下非常有限。我明白你为什么要这样做。我不知道,但我建议您在 b.android.com 中发布作为对工具团队的功能请求

标签: android merge sdk alias aar


【解决方案1】:

在 AOSP 中提出了相同的 issue。该问题的解决方法如下所述:

手动将来自 [sdk] 的 Activity 的清单条目包含在 应用程序项目的清单,将其放在 活动别名条目。

尽管这种解决方法存在问题

...在清单中重复代码。

项目维护人员似乎认为这个解决方案足够了。没有迹象表明会很快发布对潜在问题的修复。

【讨论】:

    猜你喜欢
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多