web-dev-qa-db-fra.com

Échec de la fusion du manifeste: application d'attribut @ appComponentFactory - Androidx

Lorsque je construis Gradle avec androidx j'obtiens l'erreur suivante. Veuillez m'aider à résoudre ce problème.

Message d'erreur: La fusion du manifeste a échoué: l'attribut application @ appComponentFactory value = (Android.support.v4.app.CoreComponentFactory) de [com.Android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91 is également présent sur [androidx.core: core: 1.0.0] AndroidManifest.xml: 22: 18-86 value = (androidx.core.app.CoreComponentFactory).

Manifeste:

<?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'
}
26
Kanwarpreet Singh

Après des heures de difficultés, je l'ai résolu en incluant les éléments suivants dans app/build.gradle:

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

Mettez ces drapeaux dans votre gradle.properties

Android.enableJetifier=true
Android.useAndroidX=true

Changements dans le manifeste:

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'

Voir: https://developer.Android.com/jetpack/androidx/migrate

33
Kanwarpreet Singh

Mettez ces drapeaux dans votre gradle.properties

Android.enableJetifier=true
Android.useAndroidX=true
28
Vishrut Mavani

Raison de cette erreur-

Parce qu'après la mise à niveau, androidx.core:core est accessible quelque part, lorsque votre projet n'utilise toujours pas androidx. Des classes comme CoreComponentFactory et bien d'autres se trouvent maintenant à deux endroits - androidx.core:core et com.Android.support:support-compat. C'est pourquoi cette erreur s'est produite.

Quelle est la solution?

Vous devez migrer vers AndroidX. Si vous ne connaissez pas AndroidX. Veuillez lire Qu'est-ce qu'AndroidX ?

Comment migrer votre projet

Après Android Studio 3.2 (septembre 2018), il existe une option directe pour migrer le projet existant vers AndroidX. Cela réfracte automatiquement tous les packages.

Avant de migrer, il est fortement recommandé de sauvegarder votre projet.

Projet existant

  • Android Studio> Menu Refactor> Migrer vers AndroidX ...
  • Il analysera et ouvrira la fenêtre du réfracteur en bas. Acceptez les modifications à effectuer.

image

Nouveau projet

Mettez ces drapeaux dans votre gradle.properties

Android.enableJetifier=true
Android.useAndroidX=true

Vérifiez @ mappages de bibliothèque pour un package AndroidX égal.

Vérifiez @ page officielle de Migrate to AndroidX

19
Khemraj

L'erreur dit explicitement-

[com.Android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91 est également présent sur [androidx.core: core: 1.0.0]

AndroidX est la dernière bibliothèque d'assistance de Google. Il contient tous les composants précédents de toutes les anciennes versions compatibles avec les applications . N'utilisez PAS de numéro appcompat-v-any . Utilisez plutôt un composant similaire à partir des bibliothèques AndroidX. Supprimez les bibliothèques de support numérotées de votre Gradle et de votre code où qu'il soit importé. Synchronisez ensuite votre gradle.

Le tableau de similarité des composants peut être trouvé ici . Suivez également les étapes mentionnées dans Migration vers AndroidX .

Encore une fois, arrêtez d'utiliser toutes les versions numérotées compatibles avec les applications précédentes. Il n'y a que AndroidX maintenant.

J'espère que cela t'aides.

3
MD Naseem Ashraf

Une suggestion pour découvrir la raison exacte est d'ouvrir le fichier manifeste et en bas vous verrez une option Fusionner le manifeste où vous verrez la raison exacte de l'échec .

Voir l'image ci-dessous

enter image description here

1
Jaykishan Sewak

Paramètres Gradle à l'échelle du projet. IDE (par exemple Android Studio) utilisateurs: paramètres Gradle configurés via le IDE remplacera tous les paramètres spécifiés dans ce fichier. Pour plus de détails sur la configuration de votre environnement de construction, visitez http://www.gradle.org/docs/current/userguide/build_environment .html

Spécifie les arguments JVM utilisés pour le processus démon. Le paramètre est particulièrement utile pour modifier les paramètres de la mémoire

org.gradle.jvmargs=-Xmx1536m
Android.enableJetifier=true
Android.useAndroidX=true

Une fois configuré, Gradle fonctionnera en incubation en mode parallèle. Cette option ne doit être utilisée qu'avec des projets découplés. Plus de détails, visitez http://www.gradle.org/docs/current/userguide/multi_project_builds.html

sec:decoupled_projectsvorg.gradle.parallel=true
0
gopal jain