1

Doing a tutorial about LiveData & ViewModel. In build.gradle I added:

// ViewModel and LiveData
implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"

Project synced without a problem. Then I added (1):

annotationProcessor "androidx.lifecycle:lifecycle-compiler:2.0.0"

but sync failed so I added (2) (I have Java 10.0.2 installed):

// alternately - if using Java8, use the following instead of lifecycle-compiler
implementation "androidx.lifecycle:lifecycle-common-java8:2.0.0"

But I get the same manifest merger failed error:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:6:5-28:19 to override.

Added to Android Manifest:

<application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning"
        tools:replace="android:appComponentFactory">

Sync fails:

java.lang.RuntimeException: Manifest merger failed with multiple errors, see logs

Werner
  • 314
  • 2
  • 11
  • Fixed the sync issue. Added: // ViewModel and LiveData implementation "android.arch.lifecycle:extensions:$lifecycle_version" annotationProcessor "android.arch.lifecycle:compiler:$lifecycle_version" and removed line. I removed tools:replace="android:appComponentFactory" from Manifest – Werner Nov 11 '18 at 06:17
  • Possible duplicate of [Android Material and appcompat Manifest merger failed](https://stackoverflow.com/questions/51793345/android-material-and-appcompat-manifest-merger-failed) – Martin Zeitler Jan 22 '19 at 21:32

1 Answers1

1

This is because you are not setting up the project correctly to work with Android's new AndroidX support library. See AndroidX. The quickest solution is to use the pre-androidx dependencies shown in LiveData deps. Otherwise refer to the previous link to set up AndroidX correctly in your project. This can be accomplished pretty easily by adding android.useAndroidX=true android.enableJetifier=true into your gradle.properties. Those cause the compiler to convert android support libraries to there corresponding AndroidX libraries.

Danuofr
  • 1,661
  • 19
  • 25