Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android design support library for API 28 (P) not working

I've configured android-P SDK environment successfully. When I attempt to use the android design support library I face project build errors. Project configurations are:

IDE: 3.2 Canary 17 Target API: 28 Compile API: 28

apply plugin: 'com.android.application'  apply plugin: 'kotlin-android'  apply plugin: 'kotlin-android-extensions'  android {     compileSdkVersion 28     defaultConfig {         applicationId "com.app.navigationpoc"         minSdkVersion 21         targetSdkVersion 28         versionCode 1         versionName "1.0"         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"     }     buildTypes {         release {             minifyEnabled false             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'         }     } }  dependencies {     implementation fileTree(include: ['*.jar'], dir: 'libs')     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"     implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'     implementation 'androidx.constraintlayout:constraintlayout:1.1.1'      testImplementation 'junit:junit:4.12'     androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'     androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'      implementation 'com.android.support:design:28.0.0-alpha3'     implementation 'com.android.support:cardview-v7:28.0.0-alpha3' } 

And build failed error is:

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

like image 531
Rahul Rastogi Avatar asked Jun 10 '18 09:06

Rahul Rastogi


People also ask

What is Android Design Support Library?

The Design Support library adds support for various material design components and patterns for app developers to build upon, such as navigation drawers, floating action buttons (FAB), snackbars, and tabs. The Gradle build script dependency identifier for this library is as follows: com. android.

Is the latest version of the Legacy Support Library?

Version 28(intended for Android Pie and below) is the last version of the legacy support library, so we recomand that you migrate to AndroidX libraies when using Android Q and moving forward. AndroidX replaces the original support library APIs with packages in the androidx namespace.

What is AndroidX support library?

Like the Support Library, libraries in the androidx namespace ship separately from the Android platform and provide backward compatibility across Android releases. AndroidX is a major improvement to the original Android Support Library, which is no longer maintained.


2 Answers

You can either use the previous API packages version of artifacts or the new Androidx, never both.

If you wanna use the previous version, replace your dependencies with

dependencies {     implementation fileTree(include: ['*.jar'], dir: 'libs')     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"     implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'     implementation 'com.android.support.constraint:constraint-layout:1.1.1'      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'      implementation 'com.android.support:design:28.0.0-alpha3'     implementation 'com.android.support:cardview-v7:28.0.0-alpha3' } 

if you want to use Androidx:

dependencies {     implementation fileTree(include: ['*.jar'], dir: 'libs')     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"     implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'     implementation 'androidx.constraintlayout:constraintlayout:1.1.1'      testImplementation 'junit:junit:4.12'     androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'     androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'      implementation 'com.google.android.material:material:1.0.0-alpha3'     implementation 'androidx.cardview:cardview:1.0.0-alpha3' } 
like image 52
Danfeng Avatar answered Nov 07 '22 19:11

Danfeng


Important Update

Android will not update support libraries after 28.0.0.

This will be the last feature release under the android.support packaging, and developers are encouraged to migrate to AndroidX 1.0.0.

So use library AndroidX.

  • Don't use both Support and AndroidX in project.
  • Your library module or dependencies can still have support libraries. Androidx Jetifier will handle it.
  • Use stable version of androidx or any library, because alpha, beta, rc can have bugs which you dont want to ship with your app.

In your case

dependencies {     implementation 'androidx.appcompat:appcompat:1.0.0'     implementation 'androidx.constraintlayout:constraintlayout:1.1.1'      implementation 'com.google.android.material:material:1.0.0'     implementation 'androidx.cardview:cardview:1.0.0' } 
like image 25
Khemraj Sharma Avatar answered Nov 07 '22 19:11

Khemraj Sharma