web-dev-qa-db-fra.com

La fusion de manifeste Android échoue après l'ajout de Dependency com.google.Android.material

Nous aimerions utiliser les éléments les plus récents du design de matériaux présentés par Google. C’est pourquoi j’ai ajouté com.google.Android.material:material:1.0.0-beta01 dans notre fichier de projets. Mais depuis lors, j'ai l'erreur suivante. 

La fusion du manifeste a échoué: Application attribut @ appComponentFactory valeur = (androidx.core.app.CoreComponentFactory) à partir de [androidx.core: core: 1.0.0-beta01] AndroidManifest.xml: 22: 18-86 est également présent sur [com.Android.support:support-compat:28.0.0-beta01] AndroidManifest.xml: 22: 18-91 value = (Android.support.v4.app.CoreComponentFactory) . Suggestion: ajoutez 'tools: replace = "Android: appComponentFactory"' à l'élément sur AndroidManifest.xml: 5: 5-40: 19 pour remplacer.

Sans la bibliothèque de matériaux, tout fonctionne bien. 

Ce que j'ai déjà essayé

  1. J'ai changé l'ordre des dépendances (ce qui n'a évidemment pas fonctionné) 
  2. J'ai également essayé d'ajouter tools:replace="Android:appComponentFactory" à notre fichier manifeste comme suggéré dans le message d'erreur. Mais cela m'a laissé un nouveau message d'erreur:

Java.lang.RuntimeException: la fusion de manifeste a échoué avec plusieurs erreurs, voir journaux sur com.Android.builder.core.AndroidBuilder.mergeManifestsForApplication (AndroidBuilder.Java:524) à l'adresse com.Android.build.gradle.tasks.ProcessManifest.doFullTaskAction (ProcessManifest.Java:75) sur com.Android.build.gradle.internal.tasks.IncrementalTask.taskAction (IncrementalTask.Java:106)

J'ai vérifié le fichier journal, mais le seul avertissement affiché dans idea.log est

2018-08-08 11: 08: 21,500 [fil 267] WARN - .tools.idea.model.ManifestInfo - getMergedManifest a échoué. Manifest La fusion a échoué avec plusieurs erreurs, voir les journaux 2018-08-08 11: 08: 21,642 [Sujet 267] WARN - .tools.idea.model.ManifestInfo - getMergedManifest failed La fusion du manifeste a échoué avec plusieurs erreurs, see logs 2018-08-08 11: 08: 21,917 [J pool 0/7] 

Plus d'information

Version de l'API

Android {
compileSdkVersion 28
buildToolsVersion '28.0.0'

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
}

(la même API est choisie dans Fichier> Structure du projet dans Android Studio)

Les dépendances:

dependencies {
api fileTree(include: ['*.jar'], dir: 'libs')

/** Android LIBRARIES  **/
implementation 'com.Android.support:multidex:1.0.2'
implementation 'com.Android.support:appcompat-v7:28.0.0-beta01'
api 'com.Android.support:support-v13:28.0.0-beta01'
api 'com.google.Android.material:material:1.0.0-beta01'
api 'com.Android.support:design:28.0.0-beta01'
api 'com.Android.support:preference-v7:28.0.0-beta01'
api 'com.Android.support:cardview-v7:28.0.0-beta01'
api 'com.Android.support:customtabs:28.0.0-beta01'
api 'com.Android.support:support-v4:28.0.0-beta01'

/** GOOGLE PLAY SERVICE  **/
api 'com.google.Android.gms:play-services-auth:15.0.1'

api 'com.google.Android.gms:play-services-drive:15.0.1'
api 'com.google.Android.gms:play-services-fitness:15.0.1'
api 'com.google.Android.gms:play-services-maps:15.0.1'
api 'com.google.Android.gms:play-services-wearable:15.0.1'
api 'com.google.Android.gms:play-services-vision:15.0.2'

api 'com.google.firebase:firebase-core:16.0.1'
api 'com.google.firebase:firebase-perf:16.0.0'
api 'com.crashlytics.sdk.Android:crashlytics:2.9.4'

//sunrise and sundown calculation for map day and night mode
api 'com.luckycatlabs:SunriseSunsetCalculator:1.2'

/** GOOGLE MAPS  **/
implementation 'com.google.maps.Android:android-maps-utils:0.5'
implementation 'com.google.code.gson:gson:2.8.0'

/** EXTERNAL LIBRARIES  **/

implementation 'org.osmdroid:osmdroid-Android:5.6.5'
implementation 'org.osmdroid:osmdroid-mapsforge:5.6.5'
implementation 'org.mapsforge:mapsforge-map-Android:0.6.1'
implementation 'org.mapsforge:mapsforge-map:0.6.1'
implementation 'com.caverock:androidsvg:1.2.2-beta-1'

//dropbox api
implementation 'com.dropbox.core:dropbox-core-sdk:3.0.6'    

androidTestImplementation 'junit:junit:4.12'
implementation files('libs/samsung-health-data-v1.3.0.jar')}

Manifeste

<manifest
package="com.user.libraries.bluetooth"
xmlns:tools="http://schemas.Android.com/tools"
xmlns:Android="http://schemas.Android.com/apk/res/Android">

<uses-permission Android:name="Android.permission.NFC" />
<uses-permission Android:name="Android.permission.BLUETOOTH" />
<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN" />
<uses-permission Android:name="Android.permission.WAKE_LOCK" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.BODY_SENSORS" />
<uses-permission Android:name="Android.permission.VIBRATE"/>    

<application
    tools:replace="Android:appComponentFactory"
    Android:allowBackup="true"
    Android:supportsRtl="true">
    <service Android:name="com.user.libraries.location.LocationService" />
    <service Android:name="com.user.libraries.location.BleLocationTrackerService" />
    <service Android:name="com.user.libraries.sensors.SensorService"/>

    <service Android:name="com.user.libraries.sharing.DataExchangerService"/>

    <receiver
        Android:name="com.user.libraries.bluetooth.BluetoothStateReceiver"
        Android:enabled="true">
        <intent-filter>
            <action Android:name="Android.bluetooth.adapter.action.STATE_CHANGED"/>
        </intent-filter>
    </receiver>

    <provider
        Android:name="Android.support.v4.content.FileProvider"
        Android:authorities="${applicationId}.provider"
        Android:exported="false"
        Android:grantUriPermissions="true">
        <meta-data
            Android:name="Android.support.FILE_PROVIDER_PATHS"
            Android:resource="@xml/provider_paths"/>
    </provider>

</application>

Une idée de comment je peux résoudre ce problème? 

7
little_planet

Le problème principal ici est que vous ajoutez

com.google.Android.material:material:1.0.0-beta01

qui appartient au paquet androidx récemment publié et qui, de nos jours, n’est pas compatible avec la bibliothèque de support Android que vous avez dans vos dépendances.

Vous avez 2 options:

  1. Remplacez com.google.Android.material: material: 1.0.0-beta01 avec com.Android.support:design:28.0.0-beta01 (voir toutes les bibliothèques de support https://developer.Android.com/topic/libraries/support-library/packages ) (que je recommande)
  2. Utilisez l'option Android Studio Refactor pour AndroidX (voir https://material.io/develop/Android/docs/getting-started/ ) (je ne le recommande pas).

Voici un exemple de code de travail:

 <Android.support.design.widget.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"
        app:boxStrokeColor="@color/colorAccent"
        app:boxStrokeWidth="5dp">

        <Android.support.design.widget.TextInputEditText
            Android:id="@+id/messageEditText"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content" />

 </Android.support.design.widget.TextInputLayout>
2
redlabrat

J'ai aussi ce problème. Quand utiliser cette bibliothèque dans des dépendances

implementation 'com.google.Android.material:material:1.0.0'

Donne ça :

La fusion du manifeste a échoué: Attribut application@appComponentFactory value = (androidx.core.app.CoreComponentFactory) à partir de [androidx.core: core: 1.0.0] AndroidManifest.xml: 22: 18-86 est aussi présent à [com.Android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91 valeur = (Android.support.v4.app.CoreComponentFactory). Suggestion: ajouter 'tools: replace = "Android: appComponentFactory"' à l'élément en AndroidManifest.xml: 5: 5-40: 19 à remplacer.

J'ai ce problème en passant à AndroidX 

Aller à Refactor> Migrate to AndoridX (dans la barre d'outils d'Android Studio 3.2 et supérieur)

Et mon problème résoudre 

refrence

1
Radesh

N'oubliez pas d'ajouter

Android.useAndroidX=true
Android.enableJetifier=true

à votre gradle.properties. J'oublie toujours cela lorsque j'utilise une nouvelle machine car gradle.properties n'est pas dans le contrôle de source. Ce serait génial si nous avions une erreur sensible dans ce cas.

1
Daniel Wilson