gpt4 book ai didi

android - 从合并的 list 中覆盖 AndroidManifest.xml 属性

转载 作者:行者123 更新时间:2023-11-29 14:51:44 26 4
gpt4 key购买 nike

我有一个图书馆项目和 2 个应用项目。我在库项目的 AndroidManifest.xml 中声明了 Activity 并设置了 manifestmerger.enabled,以便库 list 与两个应用程序 list 合并。

我想覆盖应用程序 list 中的 Activity 属性。具体来说,我在库项目的 list 中有以下声明:

<activity
android:name=".sample.Activity1"
android:hardwareAccelerated="true"
.... />

我想将其中一个应用程序项目中的 hardwareAccelerated 属性覆盖为 false

在应用程序 list 中放置相同的 Activity 声明但使用 `hardwareAccelerated="false"会导致构建时出错:

[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Merging manifests from project and 4 libraries.
[mergemanifest] Error: [AndroidManifest.xml:32, AndroidManifest.xml:57] Trying to merge incompatible /manifest/application/activity[@name=.sample.Activity1] element:

显然,manifestmerger 只允许您合并 list 文件,而没有覆盖声明的机制。考虑到我试图实现的用例,有什么替代方案可以让我为一个 Activity 指定不同的值,而不必在两个应用程序项目中重复 Activity 声明?

最佳答案

目前,如果您在 AndroidManifests 上存在冲突并且无法忽略冲突,则 manifest merge 会失败。

在您的情况下,最简单的解决方法是声明一个 bool 值资源,告知是否为 Activity 启用了硬件加速。

库项目:

<bool name="hardware_acceleration_enabled">true</bool>

现在你只需要在库项目中声明你的Activity,并覆盖真实项目中的资源值:

库项目:

<activity
android:name=".sample.Activity1"
android:hardwareAccelerated="@boolean/hardware_acceleration_enabled"
.... />

真实项目:

<bool name="hardware_acceleration_enabled">false</bool>

关于android - 从合并的 list 中覆盖 AndroidManifest.xml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com