Я пробовал много решений на этом сайте, но проблема все еще не решена. Проблема связана с библиотекой 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">
...
Вы случайно не используете firebase? Если да, новейшие версии находятся на Android X, следовательно, ошибка
@Ggriffo Нет. Я не использую Firebase.
Я столкнулся с этой ошибкой, когда мой проект не был перенесен на androidX, и я попытался синхронизировать библиотеку CameraX. После миграции все работает нормально.




Я думаю, вы переходите на библиотеки AndroidX.
Добавьте строки ниже в файл gradle.properties
android.useAndroidX=true
android.enableJetifier=true
Удалите tools:replace = "android:appComponentFactory" из манифеста.
Заменить android.support.v7.app.AppCompatActivity на androidx.appcompat.app.AppCompatActivity
Где заменить android.support.v7.app.AppCompatActivity?
@Lucky_girl Вы должны использовать android.support.v7.app.AppCompatActivity. Это означает, что вы должны были создать дочерние занятия для этого занятия. Замени их на androidx.appcompat.app.AppCompatActivity
Я сделал все то же самое, но получил эту ошибку: 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.
@AliAkram, который возникает, когда ваше приложение, не настроенное для AndroidX, использует библиотеку, которая фактически использует AndroidX. Что вам нужно сделать, так это посмотреть историю выпусков библиотеки и посмотреть, есть ли выпуск до перехода этих библиотек на AndroidX. Наконец, напишите себе рабочий элемент для преобразования вашего приложения в AndroidX - это может занять довольно много времени в зависимости от размера проекта.
Вы можете попробовать добавить:
android:appComponentFactory = "android.support.v4.app.CoreComponentFactory"
К тегу <application > в вашем манифесте.
Это не лучшее решение, так как заставляет использовать API уровня 28 или выше.
Спасибо, у меня это сработало, но можно ли продолжать использовать его даже в продакшене?
В моем случае я обновил зависимость 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
Как это помогает?
у меня нет этого файла в проекте. У меня есть приложение, которому 3 или 4 года, и я пытаюсь его настроить
создать новый проект и скопировать все старые файлы в новый проект
Я добавил строки ниже внутри тега <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
Вы проверили этот ответ: stackoverflow.com/a/54825603/1318946