Добавление "FlexBoxLayout" в проект нарушает компиляцию

Я пытаюсь использовать FlexBoxLayout в моем приложении, но я постоянно сталкиваюсь с ошибками. Я перепробовал всевозможные настройки и конфиги, но появляются разные ошибки. Что у меня сейчас:

build.gradle (приложение):

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'

    implementation 'com.google.android:flexbox:1.1.0'
    implementation "androidx.appcompat:appcompat:1.0.0"
}

И это дает мне ошибку:

Ошибка слияния манифеста: Атрибут application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) из [com.android.support:support-compat:28.0.0] 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:23:5-131:19, чтобы переопределить.

Когда я добавлю это tools:replace="android:appComponentFactory"' на мой манифест, я получаю следующую проблему:

Сбой манифеста с множественными ошибками, см. Логи

И вот тут я как бы сдаюсь, я даже не знаю, на какие логи смотреть.

Обновлять, когда я только добавляю flexbox к зависимостям, приложение вылетает с NoClassDefFoundError на androidx.core.view.ViewCompat учебный класс.

2 ответа

Решение

Есть несколько шагов для достижения этой цели:

1 В структуре проекта обновите версию Gradle до новейшей версии.

введите описание изображения здесь

2 В наборе build.gradle приложения compileSdkVersion 28 и в зависимости конвертировать библиотеки в androidx в соответствии с https://developer.android.com/jetpack/androidx/migrate

dependencies {
    implementation 'androidx.appcompat:appcompat:1.0.0'

    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.google.android:flexbox:1.1.0'

    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.legacy:legacy-support-v13:1.0.0'

    implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
}

3 Синхронизировать проект и восстановить

4 Зайдите в класс "Ваша деятельность". Все будет с красным подчеркиванием, а импорт будет серым. Удалить неактивный импорт. И импортируйте остальное с новым путем импорта, который будет содержать androidx, Имейте в виду, что все виджеты в макетах XML тоже должны быть изменены. Это будет легко найти, потому что при запуске приложения вы получите ошибку, подобную этой:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.widget.CoordinatorLayout" on path: DexPathList[[zip file "/data/app/com.example.mimok.flexbox2-1/base.apk",

В этом случае у меня неправильный путь к CoordinatorLayout который должен быть изменен на <androidx.coordinatorlayout.widget.CoordinatorLayout>,

Пытаться:

change
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:appcompat-v7:28.0.0'

to
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'

Вы можете прочитать об этом здесь. Кроме того, я предлагаю вам в Android Studio 3.2 и перейти к Refactor->Refactor to AndroidX

Обновите здесь, если это работает для вас.

Другие вопросы по тегам