Android X:tools:replace在第line:行指定属性,但未指定新值

时间:2018-11-12 19:29:52

标签: java android android-gradle android-manifest androidx

我已经在此网站上尝试了许多解决方案,但是仍然无法解决问题。该问题归因于Android X库。当我添加Android X时,此问题已解决,但打开了新问题。我不想添加AndroidX。如何解决此问题?

更早出现此错误:

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

添加tools:replace="android:appComponentFactory"后,出现此错误:

 java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs
at com.android.builder.core.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:540)    
at com.android.build.gradle.tasks.MergeManifests.doFullTaskAction(MergeManifests.java:173)

合并错误(在Android清单中):

  

错误:tools:replace在属性的第2行指定   android:appComponentFactory,但未指定新值app main   清单(此文件),第1行

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    package="com.example"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:replace="allowBackup, android:appComponentFactory"
    android:allowBackup="false">

    ...

    <application
        android:name="com.example"
        android:icon="@mipmap/icon"
        android:debuggable="true"
        android:hardwareAccelerated="false"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:allowBackup="false"
        tools:ignore="GoogleAppIndexingWarning,HardcodedDebugMode">
       ...

10 个答案:

答案 0 :(得分:29)

我认为您正在迁移到AndroidX库。

将以下行添加到 gradle.properties 文件

android.useAndroidX=true
android.enableJetifier=true

从清单中删除tools:replace="android:appComponentFactory"

android.support.v7.app.AppCompatActivity替换为androidx.appcompat.app.AppCompatActivity

Migrating to AndroidX

答案 1 :(得分:13)

您可以尝试添加:

android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

到清单中的标签<application >

答案 2 :(得分:3)

就我而言,我已经更新了Firebase和play服务依赖项,导致出现此问题。

还原了依赖性更新,并且错误消失

似乎最新的Firebase和Play Service依赖项与 androidx 兼容。

答案 3 :(得分:3)

迁移到android x

在标记内的行下方添加

    tools:replace="android:appComponentFactory"
    android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

然后还在gradle.properties文件中添加以下行

  android.useAndroidX=true
  android.enableJetifier=true

重建项目。

答案 4 :(得分:2)

您只需要将此代码添加到 gradle.properties 文件

android.useAndroidX=true
android.enableJetifier=true

答案 5 :(得分:0)

这经常发生是因为您同时使用了 Androidx库支持库。某些第三方库可能包含支持库,而其他第三方库可能包含Androidx库,这也可能导致此问题。如果您的PC中有gradle环境,请尝试在Android Studio终端中使用“ gradlew:app:dependencies”命令,该命令将列出所有库,包括项目的第3方库,并查看使用了Androidx库的库或框架以及不。然后尝试升级使用支持库的旧库,并且此问题应消失。

答案 6 :(得分:0)

就我而言,由于使用的Firebase版本,我遇到了问题。 降级Firebase版本对我有帮助。

  

实现'com.crashlytics.sdk.android:crashlytics:2.10.1'   实施'com.google.firebase:firebase-core:16.0.6'

答案 7 :(得分:0)

我在<application>标签内的行下面添加了

tools:replace="android:appComponentFactory" android:appComponentFactory="android.support.v4.app.CoreComponentFactory"

gradle.properties文件内的行下方

android.useAndroidX=true android.enableJetifier=true

重建项目。

答案 8 :(得分:0)

只需以这种方式配置您的清单应用程序标签

<application
        android:fullBackupContent="true"
        android:usesCleartextTraffic="true"
        tools:targetApi="m"
        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/Theme.Media">

答案 9 :(得分:-1)

我的项目中遇到了同样的错误,我已经解决了 你可以试试

Android Studio>重构>迁移到AndroidX

enter image description here