Android-материал и appcompat Манифест слияние провалилось в реагировать родной или ExpoKit
Я обновил 'android.support:appcompat-v7' до 28.0.0
.
Но это принесло ошибку из сборки.
Attribute [email protected] 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:8:5-23:19 to override.
Тогда я получаю эту ошибку в моем Logcat:
Манифест слияние не удалось
мой app.gradle:
configurations.all {
resolutionStrategy.force 'com.android.support:design:28.0.0'
resolutionStrategy.force "com.android.support:support-v4:28.0.0"
resolutionStrategy.force "com.android.support:support-media-compat:28.0.0"
}
...
dependencies {
implementation 'com.android.support:multidex:1.0.1'
// Our dependencies
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
}
как мне это исправить?
Мне нужны ваши решения.
Заранее спасибо.
Ответы
Ответ 1
Я нашел решение через мой поиск, обратившись к ответу @MehulSolanki.
я добавить
tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"
по моему на AndroidManifest.xml
и обновите com.android.tools.build:gradl:
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
И добавьте это в свой файл gradle.properties
android.useAndroidX=true
android.enableJetifier=true
ОШИБКА: [TAG] Не удалось разрешить переменную '$ {animal.sniffer.version}'
ОШИБКА: [TAG] Не удалось разрешить переменную '$ {junit.version}'
В случае вышеуказанной ошибки
- File → Invalidate Caches/restart
- Построить → Чистый проект
ошибка: пакет android.support.annotation не существует ошибка: не удается найти класс символов Nullable
В случае вышеуказанной ошибки
Добавить implementation 'androidx.annotation:annotation:1.1.0'
изменить import android.support.annotation.Nullable;
=> androidx.annotation.Nullable;
изменить import android.support.annotation.NonNull;
=> androidx.annotation.NonNull;
Версия для компиляции и целевая версия должны быть 28.
Ответ 2
Обновление 'react-native-device-info'
до version 2.1.2
исправило ошибку для меня. См. Github.com/facebook/react-native/issues/25294#issuecomment-503024749
Вкратце: библиотека использовала "services-gcm:+"
в качестве зависимости, и последняя версия gcm вызвала эту проблему.
Ответ 3
Основная причина связана с миграцией на Androidx
, сервис Google Play обновлен до AndroidX. Спасибо MR03web. Эта проблема относится к response -native-device-info? Наилучший вариант - обновить react-native-device-info
используя
yarn upgrade [email protected]
cd android && gradlew clean
react-native run-android
или, если вы не хотите обновляться, вы должны исключить com.google.android.gms
из react-native-device-info
следующим образом. Спасибо
implementation(project(":react-native-device-info"), {
exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-gcm:16.0.0"
Ответ 4
Добавьте следующее в ваш gradle.properties, затем очистите/перестройте
googlePlayServicesVersion=16.1.0
firebaseVersion=17.6.0
Ответ 5
Добавьте 'tools:replace="android:appComponentFactory"'
в свой AndroidManifest.xml
внутри <application>
Ваш AndroidManifest.xml
<?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>
Ответ 6
Понизьте версию сервиса Google Play. В android/app/build.gradle
меняются
compile 'com.google.android.gms:play-services-<service_name>:+'
в
compile 'com.google.android.gms:play-services-<service_name>:16.0.0'
Так что в моем случае <sevice_name> было location
. Но в другом случае это может быть любой другой сервис Google Play (как в списке здесь http://www.androiddocs.com/google/play-services/setup.html).
Ответ 7
Потратив целый день на эту проблему. Наконец-то я решил эту проблему.
Я получил эту ошибку из библиотеки response-native-device-info и response-native-fast-image. Я просто удаляю эту библиотеку из файла package.json и затем устанавливаю
"response-native-device-info": "^ 2.1.2", "Reaction-native-fast-image": "^ 6.0.3" эта последняя версия
Я использовал ниже версию Gradle
classpath 'com.android.tools.build:gradle:3.3.1'
Я использовал ниже свойства версии
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
Я использовал ниже версии
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
Ответ 8
Согласно ответу @Frank библиотека использовала services-gcm:+
в качестве зависимости, и последняя версия gcm вызвала эту проблему.
И в своем проекте я использовал :react-native-admob
. Так что я просто изменить следующие строки в android/app/build.gradle
От:
implementation project(':react-native-admob')
ДО:
implementation(project(":react-native-admob"), {
exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-ads:16.0.0"
Ответ 9
Этот ответ должен помочь большинству людей. Если это не помогло, то способ решить эту проблему (что не так уж и хорошо) - открыть проект Android в Android Studio. Это должно получить все файлы Gradle. С правой стороны вид должен быть андроид.
![enter image description here]()
Отсюда просто проверьте каждый файл сборки Gradle на наличие знака + перед сервисами Google Play, Firebase или любой подобной библиотекой. Это также было объяснено в этом ответе.
После чего вы либо меняете его, как описано в ответе выше. вот так.
implementation(project(":react-native-admob"), {
exclude group: "com.google.android.gms"
})
implementation "com.google.android.gms:play-services-ads:16.0.0"
Или вы предоставляете переменную, если библиотека использует ее или, в крайнем случае, измените ее там.
Причина, по которой я изложил это здесь, заключается в том, что любой новичок, которому надоела эта ошибка, случайно появившаяся из ниоткуда внезапно, может решить ее эффективно и не... умереть. лол.
Ответ 10
У меня была такая же проблема, просто обновите react-native-device-info
и выполните следующую команду
npm upgrade [email protected]
react-native run-android
Ответ 11
Обновление react-native-device-info
до версии 2.1.2 Исправьте мою проблему
Ответ 12
Если вы не используете react-native-device-info
, но имеете ту же ошибку, вероятно, это другая библиотека в вашем проекте.
Используйте это, чтобы найти нужную библиотеку:
cd your-react-native-project/android
./gradlew app:dependencies > deps.txt
Затем проверьте файл deps.txt на наличие ключевого слова "androidx". Затем вы можете быстро найти, какой нативный модуль его использует.
В моем случае это была react-native-camera
, для которой вышеприведенное решение было хорошим, но не достаточным, поэтому мне пришлось добавить это в local.properties:
firebaseVersion=17.6.0
googlePlayServicesVersion=16.1.0
googlePlayServicesVisionVersion=16.2.0
РЕДАКТИРОВАТЬ: После этих исправлений запуск ./gradlew app:dependencies > deps.txt
и поиск "androidx" не дали результатов - это то, что мы ищем.
После выполнения чистой над проектом, сборка работала.
Ответ 13
Сервисы Google Play ломают изменения. Смотрите примечания к выпуску.
Простой способ решить эту проблему - просто изменить версию сервисов Google Play.
Измените все зависимости com.google.android.gms:play-services-*
на версию 16
Ответ 14
@hong разработать добавление этого, android.useAndroidX = true, android.enableJetifier = true. в gradle.properties не работает.