Сбой манифеста после реализации зависимостей AndroidX - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь создать приложение с архитектурой MVVM, и для этого я реализовал в своем build.gradle следующее:

dependencies {

    def lifecycle_version = "2.0.0"
    def room_version = "2.1.0-alpha03"

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    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 "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
}

Но тогда я получил Manifest Merger Failed ошибку:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0] 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.

Стек предложил, чтобы я поместил tools:replace="android:appComponentFactory" в элемент <application> в Манифесте, но это само по себе вызвало большую ошибку.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Странник прав. Я должен был изменить все в AndroidX, и это то, что я сделал. Вот моя новая зависимость:

dependencies {

    def lifecycle_version = "2.0.0"
    def room_version = "2.1.0-alpha03"

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'com.google.android.material:material:1.1.0-alpha02'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    annotationProcessor "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
}
0 голосов
/ 11 января 2019

Если вы собираетесь использовать AndroidX, все ваших зависимостей поддержки должны быть AndroidX.

Это включает appcompat-v7 и constraint-layout.

AndroidX имеет таблицу миграции , которая предоставляет вам все эквиваленты библиотеки поддержки.

Это потребует некоторой ручной миграции, поскольку некоторые операции импорта (AppCompatActivity, ConstraintLayout и т. Д.) Теперь будут недействительными. Если вы попытаетесь выполнить сборку, она сообщит вам, где находятся эти недопустимые операции импорта, в журнале ошибок сборки.

Также убедитесь, что вы нашли все виды использования AppCompat Views в XML (например, ConstraintLayout) и заменили их аналогами AndroidX (просто начните вводить имя класса View, и Android Studio предложит правильное).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...