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é
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?
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:
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>
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
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.