Ошибка слияния манифеста: Атрибут application @ appComponentFactory - Androidx - PullRequest
2 голосов
/ 18 марта 2019

Когда я собираю Gradle с androidx, я получаю следующую ошибку.Пожалуйста, помогите мне решить эту проблему.

Сообщение об ошибке: Ошибка слияния манифеста: Атрибут 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).

Манифест:

<?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="com.kanwarpreet.dealmybook">

    <application
        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">

        <activity android:name=".activities.SplashActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".activities.LoginActivity" />
        <activity android:name=".activities.RegisterActivity" />
        <activity
            android:name=".activities.HomeActivity"
            android:label="@string/title_activity_home"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity
            android:name=".activities.BookDetailsActivity"
            android:label="@string/title_activity_book_details"
            android:theme="@style/AppTheme.NoActionBar"/>
        <activity android:name=".activities.AddBookActivity" />
    </application>

</manifest>

Build.Gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.kanwarpreet.dealmybook"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    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'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.google.android.material:material:1.0.0'
    implementation 'com.jakewharton:butterknife:10.1.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    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'
}

Ответы [ 5 ]

6 голосов
/ 18 марта 2019

После нескольких часов борьбы я решил эту проблему, добавив в app / build.gradle следующее:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Поместите эти флаги в свои gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Изменения вМанифест:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

См .: https://developer.android.com/jetpack/androidx/migrate

3 голосов
/ 18 марта 2019

Поместите эти флаги в свой gradle.properties

android.enableJetifier=true
android.useAndroidX=true
1 голос
/ 18 марта 2019

Ошибка явно говорит -

[com.android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91 также присутствует в [androidx.core: core: 1.0.0]

AndroidX - это новейшая библиотека поддержки от Google.Он содержит все предыдущие компоненты всех более старых версий appcompat . НЕ используйте appcompat-v-any number .Вместо этого используйте аналогичный компонент из библиотек AndroidX.Удалите нумерованные библиотеки поддержки из вашего Gradle и вашего кода, куда бы они ни импортировались.Затем синхронизируйте ваш Gradle.

Таблица сходства компонентов может быть найдена здесь .Кроме того, выполните действия, указанные в Миграция на AndroidX .

Опять же, прекратите использование любых предыдущих версий нумерованных приложений.Сейчас есть только AndroidX.

Надеюсь, это поможет.

0 голосов
/ 14 июля 2019

Причина этой ошибки -

Поскольку после обновления к androidx.core:core обращаются куда-то, когда ваш проект все еще не использует androidx.Таким образом, классы типа CoreComponentFactory и многие другие теперь находятся в двух местах - androidx.core:core и com.android.support:support-compat.Вот почему эта ошибка произошла.

Что такое решение?

Вы должны перейти на AndroidX.Если вы не знаете об AndroidX.Пожалуйста, прочитайте Что такое AndroidX ?

Как перенести проект

После Android Studio 3.2 (сентябрь 2018 года) существует прямая опция переносасуществующий проект до AndroidX.Это преломляет все пакеты автоматически.

Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.

Существующий проект

  • Android Studio> Refactor Menu> Migrate to AndroidX ...
  • Будет выполнен анализ и откроется окно Refractor внизу.Принять изменения, которые будут сделаны.

image

Новый проект

Поместите эти флаги в gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Проверка @ Отображения библиотеки для одинакового пакета AndroidX.

Проверка @ Официальная страница перехода на AndroidX

0 голосов
/ 18 марта 2019

Одно из предложений, чтобы выяснить точную причину, - открыть файл манифеста, а внизу вы увидите опцию Merge Manifest , в которой вы увидите точную причину сбоя.

См. Изображение ниже

enter image description here

...