因此,我尝试按照Firebase网站上的说明将Firebase SDK添加到我的Android Studio应用程序中(请参见图片)。
将行classpath 'com.google.gms:google-services:4.3.2'
添加到项目级别gradle可以正常工作。我可以同步gradle文件。
但是,将apply plugin: 'com.google.gms.google-services'
行添加到应用程序级别gradle文件中会破坏我的应用程序。我收到以下错误:
错误:清单合并失败:[com.android.support:support-compat:28.0.0]中的属性application @ appComponentFactory value =(android.support.v4.app.CoreComponentFactory)AndroidManifest.xml:22:18-91也存在于[androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value =(androidx.core.app.CoreComponentFactory)。建议:在AndroidManifest.xml:5:5-21:19的元素上添加'tools:replace =“ android:appComponentFactory”'以进行覆盖。
所以我去做建议。我将tools:replace="android:appComponentFactory"
添加到AndroidManifest.xml文件中的> application [Namespace“ tools” not bound]错误。我按Alt + Enter进行修复,该修复将xmlns:tools="http://schemas.android.com/tools"
添加到文件顶部。
再次尝试同步。现在,我得到一个类似的错误:错误:清单合并失败,出现多个错误,请参阅日志。这就是我迷路的地方。我不确定要在Google中搜索什么。搜索此特定错误会带来很多与我的问题无关的答案。这块领土对我来说是全新的。
P.S。最重要的是,在添加上述3行之后,build.grade(应用程序级别)文件中的implementation 'com.android.support:appcompat-v7:28.0.0'
行以红色下划线显示。
我注意到还有其他与此相关的问题,但似乎没有一个可靠的答案。因此,我冒着可能将其转贴的风险。
编辑::这是我的Gradle授权。
Project Gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.google.gms:google-services:4.3.2'
}
App Gradle
dependencies {
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
编辑2 ::
迁移到androidx之后,我将所有导入语句更新为使用androidx。它仍然不断说合并失败并出现多个错误。我不得不删除以前建议添加的行tools:replace="android:appComponentFactory"
。终于,我能够同步并运行我的应用程序了!除了现在,该应用程序只是启动和立即停止。我想那是进步。有任何想法吗?
编辑3 ::我终于得到它的工作。最后一个问题是RunTimeError“错误膨胀了类androidx.constraintlayout.ConstraintLayout。”这是因为我所有的xml文件都包含行androidx.constraintlayout.ConstraintLayout
。用线androidx.constraintlayout.widget.ConstraintLayout
代替了它,现在所有东西都变成肉汁了。 Gradle同步,应用程序加载,不会崩溃,并且一切都按预期运行]
任何帮助将不胜感激。提前谢谢,
弗拉德
问题是您的应用程序正在使用android.support
库,而您添加到项目中的Firebase SDK使用AndroidX
。
Note:AndroidX和android.support不兼容。
因此,您必须将项目迁移到AndroidX或使用Firebase的支持版本。
迁移代码以使用AndroidX
Refactor
选项中选择迁移到Androidx。使用非Androidx firebase。
Firebase messaging
19使用androidx,而较低版本则不使用)TL; DR
迁移到AndroidX
或使用Firebase的较低版本的库。
在您的应用程序标记中,添加工具:replace =“ android:appComponentFactory”
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:appComponentFactory"
>
然后gradle.properties添加
android.enableJetifier=true
android.useAndroidX=true