Android X:工具:替换为line:for属性,但没有指定新值

Mal*_*ngh 53 java android android-manifest android-gradle-plugin androidx

我在这个网站上尝试了很多解决方案,但问题仍未解决.问题是由于Android X库.当我添加Android X时,此问题已得到解决,但它开启了新问题.我不想添加Android X.如何解决这个问题?

早些时候这个错误即将来临:

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.
Run Code Online (Sandbox Code Playgroud)

我添加后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)
Run Code Online (Sandbox Code Playgroud)

合并错误(在Android Manifest中):

错误:工具:替换为line:2指定属性android:appComponentFactory,但没有指定新值的应用程序主清单(此文件),第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">
       ...
Run Code Online (Sandbox Code Playgroud)

模块级build.gradle中的依赖项块:

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.
Run Code Online (Sandbox Code Playgroud)

Aks*_*hay 64

我认为你正在迁移到AndroidX库.

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

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

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

替换android.support.v7.app.AppCompatActivityandroidx.appcompat.app.AppCompatActivity

迁移到AndroidX

  • 我应该在哪里替换android.support.v7.app.AppCompatActivity? (5认同)

Gab*_*rre 34

您可以尝试添加:

android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
Run Code Online (Sandbox Code Playgroud)

<application >清单中的标记.

  • 这不是一个好的解决方案,因为它迫使人们使用API​​ Level 28或更高版本 (4认同)

小智 10

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

Android Studio>重构>迁移到AndroidX

在此处输入图片说明

  • 然后,您必须手动修复导入!许多很多进口。 (4认同)
  • 不,它会自动修复所有导入 (2认同)

cod*_*ker 5

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

恢复依赖更新,错误消失

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


小智 5

经常发生这种情况是因为您同时使用了Androidx 库支持库。某些 3rd 方库可能包含支持库,而其他 3rd 方库可能包含 Androidx 库,这也会导致此问题。如果你的电脑有 gradle 环境,在 Android Studio 的终端中尝试“gradlew :app:dependencies”命令,这个命令会列出你项目的所有库,包括 3rd-party 库,看看哪个库或框架使用了 Androidx 库和哪个不是。然后尝试升级旧库使用的支持库,这个问题应该会消失。


Nik*_*tke 5

我在<application>标签内添加了以下几行

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

在 gradle.properties 文件中的下面几行

android.useAndroidX=true android.enableJetifier=true

重建你的项目。