首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:属性应用程序@name太存在了

错误:属性应用程序@name太存在了
EN

Stack Overflow用户
提问于 2019-07-10 09:22:59
回答 3查看 1.1K关注 0票数 0

你好,我正在开发两个模块A和B,B依赖于A。

最后两个有一个Application类,用于获取上下文统计。

在这两个模块中,它们是显式的。

模块A清单:

代码语言:javascript
运行
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.com.a">

    <application android:name=".AA"/>

</manifest>

模块B清单:

代码语言:javascript
运行
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="apps.com.b">

    <application
        android:name=".BApp">
    </application>

</manifest>

当我尝试执行Junit时,会得到以下错误:

代码语言:javascript
运行
复制
Manifest merger failed : Attribute application@name value=(apps.b.BApp) from [__tested_artifact__::blibrary] AndroidManifest.xml:14:18-72
    is also present at [:alibrary] AndroidManifest.xml:11:18-78 value=(apps.com.a.AApplication).
    Suggestion: add 'tools:replace="android:name"' to <application> element at manifestMerger2718201306699938665.xml:7:5-9:19 to override.

想知道如何解决这个问题,我会把‘tools:replace=’android:name‘是正确的,还是可能是错误?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-10 09:32:14

是的,您可以使用tools:replace="android:name"解决这个问题。

根据文档

您的APK文件可以只包含一个AndroidManifest.xml文件,但是您的Android项目可能包含由主源集、构建变体和导入的库提供的几个文件。因此,在构建应用程序时,Gradle build将所有清单文件合并到一个打包到APK中的清单文件中。 清单合并工具结合了每个文件中的所有XML元素,方法是遵循某些合并试探法,并遵循用特殊XML属性定义的合并首选项。此页面描述清单合并如何工作,以及如何应用合并首选项来解决合并冲突。

tools:replace="attr, ..." 将低优先级清单中的指定属性替换为此清单中的属性。换句话说,始终保留高优先级清单的值。

票数 1
EN

Stack Overflow用户

发布于 2020-03-04 09:22:44

在AndroidMainifest.xml中添加2行

代码语言:javascript
运行
复制
android:name=".Application"
tools:replace="android:name"
票数 0
EN

Stack Overflow用户

发布于 2021-10-14 17:03:45

我通过添加

代码语言:javascript
运行
复制
tools:replace="name"

在清单文件中的应用程序名称下面

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56967514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档