Manifeste Android Fusion échoue après l'ajout de la Dépendance com.google.android.matériel
Nous aimerions utiliser la plus récente de la conception des matériaux éléments de l'interface utilisateur, présenté par Google. Donc j'ai ajouté com.google.android.material:material:1.0.0-beta01
dans nos projets gradle fichier. Mais depuis lors, j'obtiens l'erreur suivante.
Manifeste fusion a échoué : l'Attribut d'application@appComponentFactory valeur=(androidx.de base.app.CoreComponentFactory) à partir de [androidx.core:core:1.0.0-beta01] AndroidManifest.xml:22:18-86
est également présent à [com.android.soutien:le soutien-compat:28.0.0-beta01] AndroidManifest.xml:22:18-91 valeur=(android.de soutien.v4.app.CoreComponentFactory).
Suggestion: ajouter des 'outils:replace="android:appComponentFactory"' à l'élément à AndroidManifest.xml:5:5-40:de 19 à remplacer.
Sans la bibliothèque de matériaux tout fonctionne bien.
Ce que j'ai déjà essayé
- J'ai changé l'ordre des dépendances (qui ne fonctionne évidemment pas)
- J'ai aussi essayé d'ajouter
tools:replace="android:appComponentFactory"
à notre fichier de Manifeste, comme le suggère le message d'erreur. Mais ce qui m'a laissé un nouveau message d'erreur:
java.lang.RuntimeException: Manifeste de la fusion a échoué avec de multiples erreurs, voir les journaux
au com.android.générateur de rapports.de base.AndroidBuilder.mergeManifestsForApplication(AndroidBuilder.java:524)
au com.android.construire.gradle.les tâches.ProcessManifest.doFullTaskAction(ProcessManifest.java:75)
au com.android.construire.gradle.interne.les tâches.IncrementalTask.taskAction(IncrementalTask.java:106)
J'ai vérifié le fichier journal, mais l'avertissement que montré dans l'idée.le journal est
2018-08-08 11:08:de 21 500 [thread 267] garde - la
.outils.idée.de modèle.ManifestInfo - getMergedManifest échec Manifeste
la fusion a échoué avec de multiples erreurs, voir les journaux 2018-08-08 11:08:21,642
[thread 267] garde - la .outils.idée.de modèle.ManifestInfo -
getMergedManifest échec Manifeste de la fusion a échoué avec de multiples erreurs,
voir les journaux 2018-08-08 11:08:21,917 [J piscine 0/7]
Plus d'informations
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 choisi dans le fichier > la structure d'un projet Android Studio)
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?
- Salut, Pouvez-vous s'il vous plaît poster votre manifeste code ici.
- J'ai fait la mise à jour de ma question et a ajouté le manifeste code
Vous devez vous connecter pour publier un commentaire.
Principal problème ici est que vous ajoutez
qui appartient à nouvellement libérés androidx paquet et aujourd'hui, il n'est pas compatible android avec le soutien de la bibliothèque que vous avez dans vos dépendances.
Vous avez 2 options:
Voici un exemple de code qui fonctionne:
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
design:28.0.0-beta01
. Et oui, vous pouvez utiliserstyle="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
de la bibliothèque de conception.style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox
avecandroid.support.design.widget.TextInputLayout
. Android Studio continue à dire à mon "ne peut pas résoudre le symbole". Une idée de comment résoudre ce problème?N'oubliez pas d'ajouter
à votre gradle.les propriétés. J'oublie toujours présent quand j'arrive sur une nouvelle machine, car gradle.propriétés n'est pas dans le contrôle de source. Ce serait génial si nous avons obtenu un bon d'erreur dans ce cas.
J'ai ce problème aussi. Lors de l'utilisation de cette bibliothèque dans les dépendances
Donner ceci :
J'ai ce problème en passant à AndroidX
Va Refactor->Migrer vers AndoridX (dans la barre d'outils de android studio 3.2 et au-dessus)
Et mon problème à résoudre
refrence
Le problème est que AndroidX paquets ne sont pas compatibles avec AppCompat des paquets de soutien. Vous aurez besoin de choisir un type ou l'autre. AndroidX est plus récente et conçu pour simplifier le travail avec la compatibilité des différentes versions d'Android. Google a un guide sur La migration vers AndroidX de AppCompat.
Le chemin de mise à niveau est assez simple, mais un peu lourd, mais je recommande de le faire afin de rester à jour plutôt que la rétrogradation à la conception ancienne du package.
Mise à niveau pour utiliser AndroidX
Vous pouvez spécifier que vous souhaitez utiliser AndroidX en ajoutant les lignes suivantes à votre
gradle.properties
fichier:J'ai trouvé que je devais également ajouter ce qui suit à mon
app/build.gradle
fichier pour obtenir autour de l'exceptionpar Défaut de l'interface des méthodes sont uniquement pris en charge à partir avec Android N (--min-api 24)
, vraisemblablement lié à l'un des nouveaux forfaits:Ensuite, vous aurez besoin de changer toutes vos AppCompat paquets dans le
app/build.gradle
à utiliser le correspondant AndroidX paquet. Vous pouvez voir une liste dans le Artefact mappages section de la documentation ci-dessus, qui offrira le AppCompat à AndroidX mappages pour tous les paquets.Pour exemple, voici le même paquet, de sorte que vous vous assurer que vous êtes sur le AndroidX version à la place de la AppCompat un:
Lorsque vous essayez de compiler, vous devriez obtenir des erreurs parce que vous avez probablement besoin de migrer vos Activités à utiliser les paquets récents. Pour moi, j'ai eu à faire les modifications suivantes, en retrait de la bibliothèque de prise en charge de la version et de le remplacer par le AndroidX version:
Dans le Kotlin et fichiers Java, c'est simple (comme ci-dessus), mais le compilateur n'est pas utile quand il s'agit de la mise en page des fichiers, qui lancera la disposition de l'inflation des exceptions lorsqu'ils sont gonflés à l'exécution. Vous devrez également modifier la mise en page des fichiers XML:
Au cours de ce processus, vous serez probablement invité à mettre à niveau Gradle qui est une bonne idée.
Bien qu'un peu lourd, je pense que le chemin de mise à niveau en vaut la peine pour être en mesure de continuer à utiliser les nouvelles bibliothèques qu'ils sortent.
Il semble que les versions plus récentes d'Android Studio ont une certaine automatisation de la place pour vous aider à migrer, disponible dans le menu: Refactoriser le code > Migrer vers AndroidX.
Récemment, google souhaite se séparer de la dépendance. Ils re-nom de l'paquets et ils suggèrent d'utiliser androidx à partir de maintenant. Donc les dernières versions de google gradle version sont tous sous androidx.
Vous devez migrer votre projet d'application android compact à androidx pour cela. Vous avez besoin d'utiliser certaines propriétés dans prgradle.fichier de propriétés:
et vous devez migrer votre projet de AppCompact à Androidx pour cela, vous pouvez le faire en utilisant des outils
Va Refactor->Migrer vers AndoridX (dans la barre d'outils de android studio 3.2 et au-dessus)
Après que vous avez besoin de mettre à niveau votre gradle pour androidx gradle vous le trouverez dans la page officielle de google comme
https://developer.android.com/jetpack/androidx/migrate
Partir de cette liste, il suffit de choisir l'alter androidx gradle et de construire votre projet sera fine.
l'aide d'Android studio 3.4.1 j'ai pu choisir mon projet, sélectionnez Refactoriser à partir de la barre d'outils principale, puis Migrer vers AndroidX... cela a pris quelques instants et puis il y avait un bouton "Faire Construire", ce nouveau pris quelques instants et terminées avec succès.
remplacer
avec
dans votre xml changement
à
enfin dans AndroidManifest ajouter android:thème="@style/anothertheme" outils:replace="android:appComponentFactory"