我还有下一年级

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.google.android.material:material:1.0.0-rc01'
}

但当我想要构建应用程序时,我得到下一个日志:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

好!去显化并去做:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.chopcode.myapplication">

    <application
        tools:replace="android:appComponentFactory"
        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">
    </application>

</manifest>

然后我在我的Logcat中得到这个错误:

Manifest merger failed with multiple errors, see logs that I have Linked with it

当前回答

简单的解决方案-迁移到AndroidX

在gradle里。属性,只需添加下面两个脚本

android.useAndroidX=true
android.enableJetifier=true

原因是什么↓

AndroidX中的所有包都位于以字符串AndroidX开头的一致命名空间中。支持库包已映射到相应的androidx中。*包。有关所有旧类和构建构件到新类的完整映射,请参阅包重构页面。

请参阅包重构页面

其他回答

把机器人移走。支持依存关系

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

引用材料指南

如果你还不想切换到新的androidx和com.google.android.material包,你可以通过com.android.support:design:28.0.0-alpha3依赖使用Material Components。 注意:你不应该在你的应用程序中同时使用com.android.support和com.google.android.dependencies。

仅仅删除这个依赖就可以了

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

这是一个完整的依赖示例

    dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation 'com.google.android.material:material:1.0.0-beta01'
       implementation 'com.android.support.constraint:constraint-layout:1.1.2'
       testImplementation 'junit:junit:4.12'
       androidTestImplementation 'com.android.support.test:runner:1.0.2'
       androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
   }

当我试图将Kotlin-KTX库添加到我的项目时,我遇到了同样的错误。

我尝试AndroidX迁移,问题解决了!

除非你不想使用androidx

所以在我的情况下,我正在使用一个使用androidx的库,但我不使用androidx,所以当我降级该库版本的问题得到了解决。

就我而言:

implementation 'com.github.turing-tech:MaterialScrollBar:13.+'

上述图书馆构成了问题13。+将自动获得一个使用androidx的新版本的库。所以我把库版本降级为:

implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'

问题解决了。

在我的情况下,我被添加在清单文件'

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

当然是应用标签, 会有用的

失败原因

你正在使用材料库,这是AndroidX的一部分。 如果你不了解AndroidX,请仔细阅读这个答案。

一个应用程序应该使用AndroidX或旧的Android Support库。 这就是为什么你要面对这个问题。

例如:

在你的gradle中,你正在使用

com.android。appcompat-v7(旧的Android支持库的一部分) com.google.android。material:material (AndroidX的一部分)(com.android.support:design的AndroidX构建工件)

解决方案

所以解决方案是使用AndroidX或旧的支持库。我建议使用AndroidX,因为Android在28.0.0版本之后将不会更新支持库。参见支持库的发布说明。

只需迁移到AndroidX。以下是我对迁移到AndroidX的详细回答。我把答案的必要步骤写在这里。

在迁移之前,强烈建议备份您的项目。

现有的项目

Android Studio >重构菜单>迁移到AndroidX… 它将分析并在底部打开折射窗口。接受要完成的更改。

新项目

把这些标志放在gradle.properties中

android.enableJetifier=true
android.useAndroidX=true

检查@Library映射是否有相等的AndroidX包。

查看“迁移到AndroidX”的官方页面

什么是Jetifier?