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

标签 android merge sdk alias aar

我正在编写一个 SDK,并希望开发人员能够创建一个 activity-alias,其 targetActivity 设置为我的 SDK 中的一个 Activity 。我这样做是因为我希望他们能够针对 SDK 中的特定 Activity 自定义 Intent 过滤器。如果在 sdk 的 list 中有 ActivityX,我希望他们能够在他们的应用程序 list 中编写这样的 activity-alias :

<activity-alias
    android:name="abc"
    android:targetActivity="ActivityX">
    <intent-filter>
    ... user's custom intent filter
    </intent-filter>
</activity-alias>

我遇到的问题是 targetActivityrestriction它:

"... must match the name attribute of an activity element that precedes the alias in the manifest."

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

一个想法是在 sdk list 中声明 ActivityX 之后放置一个没有 Intent 过滤器的别名,并希望这两个别名是 merged together并留在 sdk 别名的位置。但我不知道该怎么做。可能不起作用的原因之一是两个别名可能不会发生冲突。

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

最佳答案

一个相同的issue是在 AOSP 中提出来的。该问题的解决方法描述如下:

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:允许创建一个 Activity 别名,其 targetActivity 在 aar/sdk 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690348/

相关文章:

git - 将当前分支 merge 到 HEAD

android - 从命令行获取设备的 Android SDK 版本

reactjs - 如何将振幅分析与 React 应用程序集成?

java - 指定的 minCompileSdk (31)

android - 向服务器发送数据时出现NullPointerException和数据重复

android - Cordova构建Android的问题

java - 难以理解合并排序算法的合并部分

c# - 如何创建旨在通过电子邮件共享的 byte[] 图像

android - Unresolved reference : databinding

python - 基于多个条件加入两个 Pandas 数据框