android:允许创建targetActivity位于aar/sdk中的activity-alias

lf2*_*215 10 merge sdk android alias aar

我正在写一个SDK,并希望开发人员能够创建activity-aliastargetActivity设置为活动我的SDK内.我这样做是因为我希望他们能够自定义SDK中特定活动的intent过滤器.如果在sdk的清单中有ActivityX,我希望他们能够activity-alias他们的应用程序清单中写出这样的内容:

<activity-alias
    android:name="abc"
    android:targetActivity="ActivityX">
    <intent-filter>
    ... user's custom intent filter
    </intent-filter>
</activity-alias>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它targetActivity有以下限制:

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

这是一个问题,因为无论我将活动放在sdk的清单中的哪个地方,或者我将别名放在示例app的清单中,别名总是在最终合并清单中的活动之前导致INSTALL_PARSE_FAILED_MANIFEST_MALFORMED错误.

一个想法是在sdk清单中声明ActivityX之后放置一个没有intent过滤器的别名,并希望这两个别名将合并在一起并保持在sdk别名的位置.但我无法弄清楚如何做到这一点.可能不起作用的一个原因是两个别名可能无法冲突.

您是否有通过合并解决方案或其他技术解决此问题的想法?

lf2*_*215 4

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

手动将 [the sdk] 中的 Activity 的清单条目包含在应用程序项目的清单中,并将其放置在 Activity-alias 条目之前。

尽管事实上这种解决方法存在以下问题

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

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