android:允许创建一个活动别名,其targetActivity在aar / sdk中

前端之家收集整理的这篇文章主要介绍了android:允许创建一个活动别名,其targetActivity在aar / sdk中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个SDK,并希望开发人员能够创建一个活动别名,其targetActivity设置为我的SDK内的活动.我这样做是因为我希望他们能够自定义SDK中特定活动的意图过滤器.如果在sdk的清单中有ActivityX,我希望他们能够在他们的应用程序的清单中写下一个这样的活动别名:
<activity-alias
    android:name="abc"
    android:targetActivity="ActivityX">
    <intent-filter>
    ... user's custom intent filter
    </intent-filter>
</activity-alias>

我遇到的问题是targetActivity有restriction

“… must match the name attribute of an activity element that
precedes the alias in the manifest.”

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

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

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

解决方法

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

Manually include the manifest entry for the Activity from [the sdk] in
the manifest of the application project,placing it before the
activity-alias entry.

尽管这个解决方法有问题

… duplicate code across manifests.

似乎项目维护者认为这个解决方案是足够的.没有迹象表明,基本问题的修复将很快被释放.

猜你在找的Android相关文章