У меня следующий класс
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.android.material:material:1.0.0-rc01'
}
Но когда я хочу создать приложение, я получаю следующий журнал:
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace = "android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.
Ладно! Зайдите в манифест и сделайте это:
<?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>
</manifest>
Затем я получаю эту ошибку в своем Logcat:
Manifest merger failed with multiple errors, see logs that I have Linked with it
Я думаю, что все пакеты материалов объединены в android-design, проверьте ...
Мне нужно это: material.io/design/components/app-bars-bottom.html. Это в андроид-дизайне?
Вы также можете проверить это: stackoverflow.com/a/54825603/1318946
В новой студии Android есть функция для плавного переноса вашего приложения на AndroidX. перейдите по ссылке ниже. github.com/material-components/material-components-android/…
Создайте новый проект и сравните ваши файлы build.gradle и замените все
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'
и другие зависимости с теми же, что и в новом проекте что-то вроде этого
implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
implementation 'androidx.core:core-ktx:1.0.0-alpha3'
А затем исправлен импорт для использования androidx в файлах kotlin.
По какой-то причине я не хочу использовать androidx.
Просто измените "rc01" в первой и последней строке внутри зависимостей на "alpha1" Это работает для меня
Найдено несколько файлов с независимым от ОС путем 'META-INF / androidx.core_core.version
У меня нет "rc01", написанного в реализации com.android.support:appcompat-v7:28.0.0. Проблема все еще не решена. Пожалуйста, предложите какое-нибудь решение.
Этот ответ должен был быть комментарием к вопросу.
Почему это работает?
Просто удалите зависимость android.support
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
Цитата из Руководства по материалам
If you don’t want to switch over to the new androidx and com.google.android.material packages yet, you can use Material Components via the com.android.support:design:28.0.0-alpha3 dependency.
Note: You should not use the com.android.support and com.google.android.dependencies in your app at the same time.
Просто удаление этой зависимости отлично работает
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
Вот полный пример зависимостей
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.android.material:material:1.0.0-beta01'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Это наиболее точный ответ.
@FranMarzoa Это не так. Что происходит, когда совместимая библиотека импортируется из другой зависимости?
@ m0skit0, что вам придется задать здесь другой вопрос, я думаю ...;)
Начиная с Android P, библиотеки поддержки были перемещены в AndroidX.
Пожалуйста, сделайте рефакторинг для вашего библиотеки с этой страницы.
https://developer.android.com/topic/libraries/support-library/refactor
У меня была аналогичная проблема. В файл gradle.properties добавлены две строчки:
android.useAndroidX=true
android.enableJetifier=true
Эти две строки автоматически разрешили мои конфликты зависимостей между файлами Google и сторонними зависимостями. Вот ссылка для перехода: https://developer.android.com/topic/libraries/support-library/androidx-overview#new-project
android.useAndroidX = true
после добавления возникает следующая ошибка: `` * Что пошло не так: выполнение задачи завершилось неудачно ': react-native-camera: compileGeneralDebugJavaWithJavac'. > Сбой компиляции; подробности см. в выводе ошибок компилятора. * Попробуйте: запустить с параметром --stacktrace, чтобы получить трассировку стека. Запустите с параметром --info или --debug, чтобы получить дополнительный вывод журнала. Запустите с --scan, чтобы получить полную информацию. `` ''
@PrinceHamza проверьте это, мы нашли решение для этого github.com/facebook/react-native/issues/…
Это должен быть принятый ответ. Это решило проблему.
Ты спас мне день! Спасибо.
«Но я не вижу файла« gradles.properties »»! Да, поэтому в корневой папке приложения в проекте студии создайте этот файл (без расширения) и добавьте эти строки.
После этого у меня возникла ошибка Could not set unknown property 'useAndroidX' for object of type com.android.build.gradle.AppExtension..
это сработало для меня, но мне нужно изменить все теги в файлах xml, которые используют библиотеку поддержки, такую как constraintLayout и панель инструментов, а также в классах java! это займет много времени.
Спасибо брат! Искал больше часа!
android.enableJetifier = true работал у меня ... ссылка androidX уже была там. +1
В моем случае это работает отлично .. Я добавил ниже два строчных кода внутри файла манифеста
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
Кредит идет на этот ответ.
Не знаю, возникнут ли у меня проблемы в приложении позже, но это сработало!
Да, у меня возникла проблема: Найдено несколько файлов с независимым от ОС путем 'META-INF / androidx.core_core.version
тогда я получаю сообщение об ошибке, в котором говорится, что инструменты не привязаны к тегу приложения.
Вы можете опубликовать полный логарифм?
У меня были инструменты для пространства имен: github.com/magus/react-native-facebook-login/issues/…
можешь уточнить? @Johannes
Я получаю сообщение об ошибке «Префикс« tools »для атрибута« tools: replace », связанный с типом элемента« приложение »не привязано».
Ты спас мне день :)
Это решение также работает с Xamarin. Мне пришлось добавить пространство имен инструментов xmlns:tools = "https://schemas.android.com/tools" в тег manifest, и я использовал androidx как appComponentFactory вместо whateverString .
Я столкнулся с такой же ошибкой, когда пытаюсь добавить библиотеку Kotlin-KTX в свой проект.
Я пытаюсь перейти на AndroidX, и проблема решена!
Это работает, но некоторые из генерируемых им операторов импорта используют устаревшие имена пакетов. Мне пришлось исправить кучу из них, просто используя любое имя пакета androidx.*, которое IDE предложила в качестве исправления.
@Mete, этот ответ спас мне жизнь. Могу я купить тебе пива?
@girish_vr Спасибо за предложение :) Я рад, что это сработало, этого достаточно, чтобы заставить меня улыбнуться.
Я столкнулся с этой проблемой, потому что загружал последнюю версию библиотеки «support-v4» в свой файл build.gradle ... не очень хорошая практика. Если бы я ссылался на конкретную версию библиотеки в моем файле gradle, я бы никогда не столкнулся с этой проблемой. Кроме того, после того, как я немного исследовал, я увидел, что Google рекомендует перейти на библиотеку AndroidX; Итак, я решил укусить пулю. К счастью, все проблемы были решены после обновления ... катастрофа предотвращена и УРОК ИЗУЧЕН о ссылках на gradle.
Прежде всего обязательно добавьте эту строку в тег манифеста
xmlns:tools = "https://schemas.android.com/tools"
Затем добавьте инструменты, замените предложенный в студии Android.
Только если вы не хотите использовать androidx
Итак, в моем случае я использую библиотеку, в которой использовался androidx, но я не использую androidx, поэтому, когда я понизил версию этой библиотеки, проблема была решена.
В моем случае:
implementation 'com.github.turing-tech:MaterialScrollBar:13.+'
вышеупомянутая библиотека создает проблему 13. + автоматически получит новую версию библиотеки, использующей androidx. Поэтому я понизил версию библиотеки до:
implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'
И проблема была решена.
измените зависимости build.gradle на
implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
или
implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
Следуй этим шагам:
Это не сделает весь рефакторинг :(
У меня была такая же ошибка при работе с Groupie.
implementation 'com.xwray:groupie:2.3.0'
Решил поменяв версию на implementation 'com.xwray:groupie:2.1.0'
Вы используете библиотеку материалов, которая является частью AndroidX. Если вы не знакомы с AndroidX, пройдите этот ответ.
One app should use either AndroidX or old Android Support libraries. That's why you faced this issue.
Например -
В своем градиенте вы используете
com.android.support:appcompat-v7 (часть старой - библиотеки поддержки Android -)com.google.android.material:material (часть AndroidX) (артефакт сборки AndroidX из com.android.support:design)Таким образом, решение состоит в том, чтобы использовать либо AndroidX, либо старую библиотеку поддержки. Я рекомендую использовать AndroidX, потому что Android не будет обновлять библиотеки поддержки после версии 28.0.0. См. примечания к выпуску библиотеки поддержки.
Просто перейдите на AndroidX. Здесь - это мой подробный ответ по переходу на AndroidX. Я излагаю здесь необходимые шаги из этого ответа.
Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.
Existing project
New project
Поместите эти флаги в свой gradle.properties
android.enableJetifier=true
android.useAndroidX=true
Отметьте @ Сопоставления библиотек для одинакового пакета AndroidX.
Проверить @ Официальная страница перехода на AndroidX
После этого по-прежнему возникала ошибка, но помог этот ответ: stackoverflow.com/a/49525685/1972372
Не забудьте нажать «Выполнить рефакторинг» в левом нижнем углу после нажатия «Перенести на AndroidX».
Эта проблема в основном возникла для старые зависимости.
Есть 2 решения:
Первый:
Обновите все old dependencies и ClassPaths из файлов Project level gradle.
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'
Второй:
Ваш проект Migrate to AndroidX
Из меню Android Studio -> Refanctor -> Migrate to AndroidX
Спасибо, дайте мне знать, если кто-нибудь поможет из этого ответа.
На всякий случай переходить на androidX не хотелось. И мне нужно проверить свои последние изменения. Я понял, что новый компонент был -> lottie 2.8.0
Поэтому я понизил его до: implementation 'com.airbnb.android:lottie:2.7.0'
Измените proguardFile в build.gradle (Module: app) на следующее
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
вместо
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
Это сработало для меня
1. Добавьте эти коды в конец файла app / build.gradle:
configurations.all {
resolutionStrategy.force 'com.android.support:support-v4:28.0.0'
// the above lib may be old dependencies version
}
2.Изменена версия SDK и инструментов до 28:
compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion 28
3. В вашем файле AndroidManifest.xml вы должны добавить две строки:
<application
android:name = ".YourApplication"
android:appComponentFactory = "AnyStrings"
tools:replace = "android:appComponentFactory"
android:icon = "@drawable/icon"
android:label = "@string/app_name"
android:largeHeap = "true"
android:theme = "@style/Theme.AppCompat.Light.NoActionBar">
Или просто
в gradle.properties просто добавьте ниже два скрипта
android.useAndroidX=true
android.enableJetifier=true
В чем была причина ↓
All packages in AndroidX live in a consistent namespace starting with the string androidx. The Support Library packages have been mapped into the corresponding androidx.* packages. For a full mapping of all the old classes and build artifacts to the new ones, see the Package Refactoring page.
См. страница "Рефакторинг пакета"
В моем проекте нет такого файла gradle.properties. (Первоначально он был создан в eclipse несколько лет назад, а затем перенесен в студию Android)
О ... Я не сталкивался с такой ситуацией, я нашел ниже ветку, которая может вам помочь stackoverflow.com/a/37389861/6917362 Попробуйте и прокомментируйте, пожалуйста
Просто создайте этот файл рядом с основным build.gradle, если он не существует, и синхронизируйте проект.
Ссылка на решение приветствуется, но убедитесь, что ваш ответ полезен и без нее: добавить контекст вокруг ссылки, чтобы ваши друзья-пользователи имели некоторое представление о том, что это такое и почему оно есть, а затем процитируйте наиболее релевантную часть страницы, на которую вы ссылаетесь. если целевая страница недоступна. Ответы, которые представляют собой не более чем ссылку, могут быть удалены.
просто добавьте эти две строки кода в свой файл манифеста
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
Наконец нашел быстрое и простое решение, добавив две строчки в файл android/build.gradle.
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.6.0"
Пожалуйста, следуйте этому на 100% правильно.
Куда еще это добавить?
Добавьте это в файл android / build.gradle
@ManojAlwis, в какой раздел файла build.gradle нам нужно это поместить?
@KevalLangalia, просто добавьте эти две строки в файл android -> build.gradle. например: buildscript {ext {buildToolsVersion = "28.0.3" minSdkVersion = 19 compileSdkVersion = 28 targetSdkVersion = 28 supportLibVersion = "28.0.0" googlePlayServicesVersion = "16. +" firebaseVersion = "17.3.4"}
действительно полезно ... Спасибо
Добавьте эти строки внутрь файла AndroidManifest.xml.
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
tools становится красным при добавлении. нужно еще что-то добавить?
Больше нечего добавить. Возможно, одна из причин - несовпадение версии ur gradle. Можете ли вы показать код вашего файла AndroidManifest.xml?
Я попытался перейти на androidx, и у меня все еще не удалось выполнить задачу ': app: compileDebugJavaWithJavac'. > Сбой компиляции; подробности см. в выводе ошибок компилятора.
Вот мой манифест Android <application android: allowBackup = "true" android: icon = "@ mipmap / ic_launcher" android: label = "@ string / app_name" android: roundIcon = "@ mipmap / ic_launcher" android: usesCleartextTraffic = "true "android: supportsRtl = " true "android: theme = " @ style / AppTheme "tools: replace = " android: appComponentFactory "android: appComponentFactory = " @ string / texthere ">
Отличное решение, сэкономило мое время.
У меня была такая же проблема в течение трех дней.
Это похоже на то, что Android хочет, чтобы мы использовали либо Kotlin, либо AndroidX, они покончили с Android.
Но вот как я решил это.
NB: вы должны использовать последние библиотеки (файл build.grudle) в последней стабильной версии android studio 3.4.1.
Если вы не собираетесь переходить на AndroidX, выполните следующие действия.
Все, что я сделал, это перешел к опции «Рефакторинг» в верхнем меню.
Затем выберите «Перенести на AndroidX».
Примите, чтобы сохранить проект в виде zip-файла.
Обновите Android Studio, а также Gradle, чтобы не возникало проблем.
Для решения этой проблемы я бы рекомендовал явно определить версию для переменных ext.
на android/build.gradle в вашем корневом проекте
ext {
googlePlayServicesVersion = "16.1.0" // default: "+"
firebaseVersion = "15.0.2" // default: "+"
// Other settings
compileSdkVersion = <Your compile SDK version> // default: 23
buildToolsVersion = "<Your build tools version>" // default: "23.0.1"
targetSdkVersion = <Your target SDK version> // default: 23
supportLibVersion = "<Your support lib version>" // default: 23.1.1
}
Справка https://github.com/zo0r/react-native-push-notification/issues/1109#issuecomment-506414941
Все дело в совместимости версий библиотеки
Я столкнулся с этой странной ошибкой пару часов 2. Я решил эту ошибку, выполнив следующие действия.
измените свои зависимости build.gradle на
implementation 'com.google.android.gms:play-services-maps:17.0.0'
к
implementation 'com.google.android.gms:play-services-maps:15.0.0'
Честно говоря, я сделал то же самое, и это сработало, поэтому я предполагаю, что все дело в совместимости версий библиотеки после процесса слияния
Пожалуйста, перейдите в Refactor-> Migrate-> Migrate to Android X.
Пожалуйста, добавьте это в свой файл gradle.properties:
android.enableJetifier=true
android.useAndroidX=true
И выполните синхронизацию.
Не могли бы вы объяснить, каково ваше положение сейчас?
Унаследованному мною проекту уже полвека. Я попытался реализовать новую аналитику Fabric / Firebase, которую продвигает Google. И эта новая библиотека использует библиотеки совместимости с androidx, а мой проект использует AppCompat. Теперь мне пришлось иметь дело с множеством обновлений зависимостей и прочего. Я остановился, а затем попробовал разные вещи, в том числе эти команды, и они мне нужны из-за нового материала Firebase. После того, как я включил это, я получил массу ошибок компилятора. Исправлено, но теперь у меня есть ошибки, исходящие из файлов ui xml .. Так что мне придется отказаться от всего и попробовать со старыми версиями.
После еще одного часа ручного исправления пространств имен классов для androidx, похоже, теперь он работает. Проблема в том, что компилятор не смог обнаружить в xml, что, например, "android.support.v7.widget.AppCompatSpinner" должен быть "androidx.appcompat.widget.AppCompatSpinner". Этот документ пригодился: developer.android.com/jetpack/androidx/migrate
Надеюсь, теперь он работает, дайте мне знать, если что-то пойдет не так, мы будем работать над этим!
будьте очень осторожны с этим. это повлияет на все файловое дерево. Я работал в реальной области кода и почти реорганизовал сотни файлов. прежде чем делать это, изолируйте проекты на их собственном пути. также будьте осторожны, если вы используете фрагменты, это изменит импорт фрагментов на: import androidx.fragment.app.Fragment; страшно очень страшно
Выполните миграцию на androidX, если это уже существующий проект. Если это новый проект, добавьте эти два флага в Gradle.propeties.
android.enableJetifier=true
android.useAndroidX=true
подробнее шаги https://developer.android.com/jetpack/androidx или проверьте это Что такое AndroidX?
Посмотрите это изображение и добавьте эту строку в свой файл Android AndroidManifest.xml.
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
какая строка означает?
@KishoreKumar, вы также можете добавить любое строковое имя, например appName.
чтобы быть точным, AnyString должно быть полным именем класса, расширяющим AppComponentFactory. например, настраиваемый класс com.xxx.MyFactory расширяет AppComponentFactory
Я тоже столкнулся с той же проблемой, для вашей студии Android просто измените плагин Android Gradle версии 3.3.2 а версия Gradle - 5.1.1
Я не знаю, это правильный ответ или нет, но у меня это сработало
Увеличить свойство оболочки сетки
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
и построить сетку, чтобы
classpath 'com.android.tools.build:gradle:3.4.2'
это показывает ошибку из-за версии.
Я думаю, что строка должна быть androidx.core.app.AppComponentFactory, произвольные строки иногда вызывают случайные ошибки.,
в моем случае я добавляю в файл манифеста `
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
тег приложения, конечно, Это сработает
если вы используете конденсатор, обновите свой package.json до конденсатора / сердечника 2.0.1 или выше.
Попробуй это
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "android.support.v4.app.CoreComponentFactory"
Восстановите свой проект.
Попробуйте удалить эти строки: реализация com.android.support:appcompat-v7:28.0.0-rc01 и реализация com.android.support.constraint: constraint-layout: 1.1.2.