将 Android Studio 升级到 3.2.1 后合并清单警告

Posted

技术标签:

【中文标题】将 Android Studio 升级到 3.2.1 后合并清单警告【英文标题】:Merged Manifest Warning after upgrading Android Studio to 3.2.1 【发布时间】:2019-03-25 10:18:36 【问题描述】:

升级到android Studio 3.2.1 后,在编辑AndroidManifest.xml 文件时,我看到文件的<application> 部分以黄色突出显示(可能是由于下面的警告)。 我还看到一个名为 Merged Manifest 的新标签,其中包含警告:

合并错误:警告 activity#com.google.firebase.auth.internal.FederatedSignInActivity@android:launch Mode 被标记在 AndroidManifest.xml:24 以替换其他声明,但没有其他声明存在应用程序主清单(此文件),第 23 行

问题:

    这个新选项卡是 AS 3.2.1 中的新内容吗?还是因为 AS 3.2.1 发现了以前版本没有的新警告?

    警告是关于什么的?出于某种原因,我是否需要在我的应用的 AndroidManifest.xml 中为 Firebase 添加一个活动?

    我该如何解决?

(注意:可能在同一时间也有 Firebase 更新。)

Firebase 目前是最新的。

implementation 'com.google.firebase:firebase-auth:16.0.5'
implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.firebase:firebase-crash:16.2.1'

尽管如此,一切都编译并运行良好。

【问题讨论】:

您找到解决方案了吗 没有。你是否也遇到过这种情况? 是的得到同样的警告 我已经向 Firebase 提交了一份错误报告(我怀疑这是问题所在,但很可能是 AS 3.2.1)。如果我收到任何有用的回复,我会更新。 我收到了 Firebase 支持的回复,但他们无法重现。正如所料,他们希望获得一个 MCVE (***.com/help/mcve),但现在我没有时间创建一个。 @Vinit,如果你能做到这一点,请随时给他们发一份。案例编号为[5-4824000024047]供您参考。 【参考方案1】:

首先在manifest添加的应用节点中添加如下activity:

<activity
    android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
    android:excludeFromRecents="true"
    android:exported="true"
    android:launchMode="singleInstance"
    android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    tools:replace="android:launchMode" />

然后将以下内容添加到Manifest.xml:

<service android:name="com.google.firebase.components.ComponentDiscoveryService" />
<meta-data
    android:name="com.google.firebase.components:com.google.firebase.auth.FirebaseAuthRegistrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
    android:name="com.google.firebase.components:com.google.firebase.analytics.connector.internal.AnalyticsConnectorRegistrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />
<meta-data
    android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
    android:value="com.google.firebase.components.ComponentRegistrar" />

【讨论】:

“清单添加中的应用程序节点”是什么意思?谢谢 您是如何以及在何处找到此解决方案的? 我在别处看过第一部分。为什么需要第二部分? ***.com/questions/54577588/…【参考方案2】:

我在 AndroidManifest.xml 中加入了以下行

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" //add this line
    ...>     

并且只有以下自闭合活动标记。

<activity
    android:name="com.google.firebase.auth.internal.FederatedSignInActivity"
    android:excludeFromRecents="true"
    android:exported="true"
    android:launchMode="singleInstance"
    android:permission="com.google.firebase.auth.api.gms.permission.LAUNCH_FEDERATED_SIGN_IN"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    tools:replace="android:launchMode" />

【讨论】:

【参考方案3】:

我遇到了同样的问题。这不是因为 Firebase。

我创建了一个名为my_launcher 的新启动器图标。生成的2个文件my_launcher.xmlmy_launcher_round.xml有错误。

就我而言,它没有找到@mipmap/ic_launcher_backgroundbackground 标签。我删除了它,重建工作正常。

【讨论】:

【参考方案4】:

如果您有大写的包,我会重现问题,请重新检查您的命名包。 为解决此问题,请将您创建的所有包名称设为小写。

【讨论】:

【参考方案5】:

这个问题是通过firebase-auth:16.0.5...引入的。

在以前的版本中保留该依赖项是一种可能的解决方法:

dependencies 
    ...

    //noinspection GradleDependency
    implementation "com.google.firebase:firebase-auth:16.0.4"

人们可能会忽略该警告,到目前为止没有发现任何副作用。

【讨论】:

【参考方案6】:

打开命令提示符,然后输入以下命令

cd android && gradlew clean

【讨论】:

【参考方案7】:

找出是什么原因造成的!

由于警告,整个 &lt;application&gt;...&lt;/application&gt; 部分被突出显示

我可以通过添加该行来解决问题

<application

      ..

      tools:ignore="GoogleAppIndexingWarning"

      ..>
      ..

</application>

或者,您可能希望添加来自 URL 的链接 - 有关详细信息,请参阅 enter link description here

https://***.com/users/8278273/vinit-poojary,希望对你有帮助。

【讨论】:

这不是一个合适的解决方案,你只是禁用谷歌索引警告 不是每个人都需要做链接,所以它是那些人的解决方案。另外,对于那些想要进行链接的人,我在上面的答案中提供了如何做到这一点的链接(在此处输入链接描述 - url:developer.android.com/studio/write/app-link-indexing)。 最终我确实做了应用链接索引(见上面的链接),因为无论如何我都希望谷歌索引。

以上是关于将 Android Studio 升级到 3.2.1 后合并清单警告的主要内容,如果未能解决你的问题,请参考以下文章

解决升级android studio 3.2.1后 "No toolchains found in the NDK toolchains folder for ABI with prefix

将 Android Studio 升级到 2.3 后调试控制台不显示消息

android studio怎么在线升级

将 Android Studio 项目从 0.8.6 升级到 RC4 时出错

将 Android Studio Gradle 升级到 6.1.1 会破坏 Greendao3GradlePlugin

将 Android Studio 的 Gradle 插件升级到 3.0.1 和 Gradle 到 4.1 后无法复制配置依赖项