Я знаю, androidx и зависимость поддержки, вызывающая ошибку multidex Мы не можем использовать поддержку androidx и android одновременно. Поэтому я полностью перехожу на androidx. но одна из моих зависимых библиотек использовала поддержку Android "lottie".
Что мы можем сделать в вышеуказанной ситуации? Следует ли мне удалить «лотти» из моего проекта.
ниже мой градиент
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
Вы можете включить Jetifier в своем проекте, который в основном заменит зависимости Android Support Library в зависимостях вашего проекта на AndroidX-единицы. (например, ваши зависимости Lottie будут изменены с поддержки на AnroidX)
Из документации Android Studio (https://developer.android.com/studio/preview/features/):
The Android Gradle plugin provides the following global flags that you can set in your gradle.properties file:
- android.useAndroidX: When set to true, this flag indicates that you want to start using AndroidX from now on. If the flag is absent, Android Studio behaves as if the flag were set to false.
- android.enableJetifier: When set to true, this flag indicates that you want to have tool support (from the Android Gradle plugin) to automatically convert existing third-party libraries as if they were written for AndroidX. If the flag is absent, Android Studio behaves as if the flag were set to false.
Предварительное условие для Jetifier:
Android Studio 3.2Чтобы включить jetifier, добавьте эти две строки в файл gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Наконец, проверьте примечания к выпуску AndroidX, потому что jetifier все еще имеет некоторые проблемы с некоторыми библиотеками (например, Dagger Android): https://developer.android.com/topic/libraries/support-library/androidx-rn
@hiren dabhi Можете ли вы создать новый вопрос для своей установки, если предложенное решение не работает для вас? Найти ответ, не зная подробностей о вашей настройке, довольно сложно.
Тебе не о чем беспокоиться
Просто включите Jetifier в своем проекте.
Откройте gradle.properties и добавьте две строки ниже.
android.enableJetifier=true
android.useAndroidX=true
Он преобразует все библиотеки поддержки вашей зависимости в AndroidX во время выполнения (у вас могут быть ошибки времени компиляции, но приложение будет работать).
gradle.properties не найден в моих файлах, создал сам
на самом деле, транзитивная зависимость + кеш Gradle может не работать, даже android.enableJetifier=true, если это произошло, я думаю, что вручную, используя jetifier-standalone для стороннего aar, может сработать.
У меня андроид студия 4.1. Я включил Jetifier. Мое приложение не работает.
@Khemraj даже добавив Jetifier в gradle.properties, он начал показывать ошибки времени компиляции повсюду в проекте, где используется библиотека поддержки V4. Так что остается единственный вариант - исправить и перенести весь код в AndroidX вручную. Для меня это не было вариантом.
у меня есть вопрос здесь для того же: stackoverflow.com/questions/64716862/…
Добавление android.useAndroidX=true и android.enableJetifier=true вручную доставляло мне неудобства. Потому что это выдает ошибку или Suggestion: add 'tools:replace = "android:appComponentFactory"' to <application>
Чтобы включить Jet-fire в проекте, в Android Studio есть опция
Выберите свой проект ---> Щелкните правой кнопкой мыши
приложение ----> Рефакторинг ----> Переход на AndroidX
Показано на изображении ниже: -
После нажмите Переход на AndroidX.
Он запросит подтверждение и резервную копию вашего проекта.
И на последнем шаге вас попросят провести рефакторинг.
После выполнения рефакторинга проверьте, что в вашем gradle.properties есть android.useAndroidX=true и android.enableJetifier=true. Если это не так, добавьте эти две строки в свой файл gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Note:- Upgrading using Android Studio, this option works if you have android studio 3.2 and onward. Check this
Хорошее предложение, но просто примечание для людей, обновляющих с помощью Android Studio, этот вариант работает, если у вас есть Android Studio 3.2 и новее. Отметьте это developer.android.com/jetpack/androidx/migrate
Я использовал эти две строки кода в теге приложения в manifest.xml, и это сработало.
tools:replace = "android:appComponentFactory"
android:appComponentFactory = "whateverString"
Источник: https://github.com/android/android-ktx/issues/576#issuecomment-437145192
Прокомментируйте эту строку в gradle.properties
android.useAndroidX=true
OP спрашивает, можно ли использовать AndroidX с поддержкой Android. Вы предлагаете отключить AndroidX
перейдите в gradle.properties и прокомментируйте
Добавьте строки в файл gradle.properties
android.useAndroidX=true
android.enableJetifier=true
Если ваш проект не AndroidX (имеется в виду Appcompat) и получил эту ошибку, попробуйте понизить версию версий зависимостей, которые вызывают эту ошибку, в моем случае play-services-location ("implementation 'com.google.android.gms: play-services-location : 17.0.0 '"), я решил проблему, перейдя на com.google.android.gms: play-services-location: 16.0.0'
У меня была такая проблема раньше, это был файл gradle.properties, которого не существует, только gradle.properties.txt, поэтому я зашел в папку своего проекта и скопировал и вставил файл gradle.properties.txt, но без него. txt, то он, наконец, сработал.
Я добавил две строчки в файл gradle.properties
android.useAndroidX=true
android.enableJetifier=true
то я получил следующую ошибку
error: package android.support.v7.app does not exist
import android.support.v7.app.AlertDialog;
^
Я удалил импорт и добавил строку ниже
import static android.app.AlertDialog.*;
А классы, расширенные из AppCompactActivity, добавили строку ниже. (Для этих ошибок вам просто нужно нажать alt + enter в студии Android, которая импортирует для вас правильную библиотеку. Таким образом вы можете исправить все ошибки)
import androidx.appcompat.app.AppCompatActivity;
В вашем XML-файле, если вы использовали какой-либо
<android.support.v7.widget.Toolbar
замените его на androidx.appcompat.widget.Toolbar
затем в вашем Java-коде
import androidx.appcompat.widget.Toolbar;
Но тогда у вас есть огромный проект, в котором нельзя изменить все фрагменты и действия всего за одно изменение androidX.
В папке проекта в build.gradle (Модуль: Приложение)
В меню Refactor нажмите Migration to AndroidX, чтобы продолжить миграцию.
После этого, если вы откроете gradle.properties в папке Project, вы увидите определение, как показано ниже.
android.enableJetifier = true
android.useAndroidX = true
В моем проекте используется несколько библиотек, некоторые из них используют библиотеку поддержки, а некоторые используют androidx. Как использовать обе библиотеки в моем проекте?