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.

После того, как я добавил 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):

Error: tools:replace specified at line:2 for attribute android:appComponentFactory, but no new value specified app main manifest (this file), line 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">
       ...

Вы проверили этот ответ: stackoverflow.com/a/54825603/1318946

Pratik Butani 22.02.2019 12:46

Вы случайно не используете firebase? Если да, новейшие версии находятся на Android X, следовательно, ошибка

griffins 26.06.2019 05:26

@Ggriffo Нет. Я не использую Firebase.

Malwinder Singh 05.07.2019 16:34

Я столкнулся с этой ошибкой, когда мой проект не был перенесен на androidX, и я попытался синхронизировать библиотеку CameraX. После миграции все работает нормально.

Bhriguraj Salponia 21.05.2020 15:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
78
4
85 794
11

Ответы 11

Я думаю, вы переходите на библиотеки AndroidX.

Добавьте строки ниже в файл gradle.properties

android.useAndroidX=true
android.enableJetifier=true

Удалите tools:replace = "android:appComponentFactory" из манифеста.

Заменить android.support.v7.app.AppCompatActivity на androidx.appcompat.app.AppCompatActivity

Переход на AndroidX

Где заменить android.support.v7.app.AppCompatActivity?

Lucky_girl 18.06.2019 11:24

@Lucky_girl Вы должны использовать android.support.v7.app.AppCompatActivity. Это означает, что вы должны были создать дочерние занятия для этого занятия. Замени их на androidx.appcompat.app.AppCompatActivity

Malwinder Singh 26.06.2019 14:45

Я сделал все то же самое, но получил эту ошибку: Manifest merger failed : Attribute application@appComponentFactory value=(whateverString) from AndroidManifest.xml:26:9-53 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:23:5-149:19 to override.

Ali Akram 27.06.2019 11:29

@AliAkram, который возникает, когда ваше приложение, не настроенное для AndroidX, использует библиотеку, которая фактически использует AndroidX. Что вам нужно сделать, так это посмотреть историю выпусков библиотеки и посмотреть, есть ли выпуск до перехода этих библиотек на AndroidX. Наконец, напишите себе рабочий элемент для преобразования вашего приложения в AndroidX - это может занять довольно много времени в зависимости от размера проекта.

Someone Somewhere 17.07.2019 01:37

Вы можете попробовать добавить:

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

К тегу <application > в вашем манифесте.

Это не лучшее решение, так как заставляет использовать API уровня 28 или выше.

Ojonugwa Jude Ochalifu 06.02.2019 09:15

Спасибо, у меня это сработало, но можно ли продолжать использовать его даже в продакшене?

Mohammed Alawneh 16.07.2019 11:27

У меня такая же ошибка в моем проекте, я решил ее Можешь попробовать

Android Studio> Рефакторинг> Переход на AndroidX

Нет, он автоматически исправляет весь импорт

F0r3v3r-A-N00b 20.08.2019 03:25

В моем случае я обновил зависимость Firebase и play services, что привело к этой проблеме.

Отменил обновления зависимостей, и ошибка исчезла

Кажется, что последние зависимости Firebase и Play Service совместимы с androidx.

Часто это происходило из-за того, что вы использовали Библиотеки Androidx и библиотеки поддержки одновременно. Некоторые сторонние библиотеки могут содержать библиотеки поддержки, а другие сторонние библиотеки могут содержать библиотеки Androidx, это также может привести к этой проблеме. Если у вас есть среда gradle на вашем ПК, попробуйте команду «gradlew: app: dependencies» в терминале Android Studio, эта команда выведет список всех библиотек, включая сторонние библиотеки вашего проекта, и посмотрите, какая библиотека или фреймворк использовали библиотеки Androidx и чего нет. Затем попробуйте обновить старые библиотеки, используемые вспомогательными библиотеками, и эта проблема должна исчезнуть.

В моем случае я столкнулся с проблемой из-за версии firebase, которую я использовал. Мне помогло понижение версии firebase.

implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' implementation 'com.google.firebase:firebase-core:16.0.6'

вам нужно просто добавить этот код в файл gradle.properties

android.useAndroidX=true
android.enableJetifier=true

Как это помогает?

Coding John 30.10.2019 13:55

у меня нет этого файла в проекте. У меня есть приложение, которому 3 или 4 года, и я пытаюсь его настроить

Awais Mustafa 12.05.2020 14:38

создать новый проект и скопировать все старые файлы в новый проект

Rasoul Miri 13.05.2020 08:37

Я добавил строки ниже внутри тега <application>

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

под строками внутри файла gradle.properties

android.useAndroidX=true android.enableJetifier=true

Восстановите свой проект.

перейти на android x

добавить строки ниже внутри тега

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

затем также добавьте строки ниже внутри файла gradle.properties

  android.useAndroidX=true
  android.enableJetifier=true

Восстановите свой проект.

Просто настройте тег манифеста приложения таким образом

<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">

в моем случае у меня проблема с

tools:replace = "android:usesCleartextTraffic"

Я уже использую AndroidX, у меня уже есть эти свойства в gradle.properties

android.useAndroidX=true
android.enableJetifier=true

проблема в том, что я забыл установить значение true (или это может быть false, в зависимости от вашего случая)

<application
        android:label = "myApp"
        tools:replace = "android:usesCleartextTraffic"
        android:usesCleartextTraffic = "true"> // I forget this line

Другие вопросы по теме