将 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" />
【讨论】:
“清单添加中的应用程序节点”是什么意思?谢谢我在 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.xml
和my_launcher_round.xml
有错误。
就我而言,它没有找到@mipmap/ic_launcher_background
的background
标签。我删除了它,重建工作正常。
【讨论】:
【参考方案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】:找出是什么原因造成的!
由于警告,整个 <application>...</application>
部分被突出显示
我可以通过添加该行来解决问题
<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 项目从 0.8.6 升级到 RC4 时出错
将 Android Studio Gradle 升级到 6.1.1 会破坏 Greendao3GradlePlugin
将 Android Studio 的 Gradle 插件升级到 3.0.1 和 Gradle 到 4.1 后无法复制配置依赖项