Поэтому я пытаюсь добавить Firebase SDK в свое приложение Android Studio в соответствии с инструкциями с веб-сайта Firebase (см. Рисунок).
Добавление строки classpath 'com.google.gms:google-services:4.3.2'
на уровне проекта Gradle работает нормально. Я могу синхронизировать файлы gradle.
Однако добавление строки apply plugin: 'com.google.gms.google-services'
в файл gradle уровня приложения разрушает мое приложение. Я получаю следующее сообщение об ошибке:
ОШИБКА: сбой слияния] AndroidManifest.xml: 22: 18-91 также присутствует в [androidx.core: core: 1.0.0] AndroidManifest.xml: 22: 18-86 value = (androidx.core.app.CoreComponentFactory). Предложение: добавьте 'tools: replace = "android: appComponentFactory"' к элементу на AndroidManifest.xml: 5: 5-21: 19, чтобы переопределить.
Так что я пойду, чтобы сделать предложение. Я добавляю tools:replace="android:appComponentFactory"
в> application <элемент в файле AndroidManifest.xml. Это тогда дает мне <em>Пространство имен "инструменты", не связанное ошибка. Я нажимаю Alt + Enter, чтобы исправить, что добавляет xmlns:tools="http://schemas.android.com/tools"
в начало моего файла.
Попробуйте синхронизировать снова. Теперь я получаю похожую ошибку: ОШИБКА: сбой манифеста с множественными ошибками, см. Журналы . И это где я потерян. Я не уверен, что искать в Google. поиск этой конкретной ошибки вызывает много ответов, не связанных с моей проблемой. Эта территория совершенно новая для меня.
PS Кроме того, строка implementation 'com.android.support:appcompat-v7:28.0.0'
внутри моего файла build.grade (уровень приложения) подчеркнута красным после добавления ранее упомянутых 3 строк.
Я заметил, что есть другие вопросы, связанные с этим, но ни на один, похоже, нет четких ответов. Поэтому я рискую, что это может быть репост.
РЕДАКТИРОВАТЬ :: Вот мои зависимости gradle.
Project Gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
classpath 'com.google.gms:google-services:4.3.2'
}
Приложение Gradle
dependencies {
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
}
РЕДАКТИРОВАТЬ 2 ::
Хорошо, после миграции на androidx я обновил все свои операторы импорта для использования androidx. Он все еще говорил, что слияние не удалось с несколькими ошибками. Мне пришлось удалить строку tools:replace="android:appComponentFactory"
, которую он ранее предлагал добавить. Наконец я смог синхронизировать и запустить свое приложение! За исключением того, что сейчас приложение просто запускается и сразу останавливается. Я полагаю, это прогресс. Есть идеи по этому поводу?
РЕДАКТИРОВАТЬ 3 :: Я наконец получил его на работу. Последней проблемой была RunTimeError "Ошибка надувания класса androidx.constraintlayout.ConstraintLayout". Это вызвано тем, что все мои xml-файлы имели строку androidx.constraintlayout.ConstraintLayout
. заменил это на строку androidx.constraintlayout.widget.ConstraintLayout
и теперь все подливки. Gradle синхронизирует, загружает приложение, не вылетает, и все работает, как и положено
Любая помощь будет принята с благодарностью. Спасибо заранее,
Влад