Добавление «FlexBoxLayout» в проект нарушает компиляцию - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь использовать 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"
}

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

Ошибка слияния манифеста: Атрибут приложения @Значение appComponentFactory = (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 ]

0 голосов
/ 04 октября 2018

Для этого есть несколько шагов:

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

enter image description here

2 Inнабор 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>.

0 голосов
/ 03 октября 2018

Попробуйте:

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

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

...