118 votes

La bibliothèque de support de conception Android pour l'API 28 (P) ne fonctionne pas

J'ai configuré android-P SDK de l'environnement avec succès. Lorsque je tente de l'utiliser android d'aide à la conception de la bibliothèque, je fais face à projet de construction d'erreurs. Les configurations de projet sont:

IDE: 3.2 Canaries 17 Cible API: 28 Compiler 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'
}

Et build failed erreur est:

Manifeste de la fusion a échoué : l'Attribut d'application@appComponentFactory valeur=(androidx.de base.app.CoreComponentFactory) à partir de [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 est également présent à [com.android.soutien:le soutien-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91 valeur=(android.de soutien.v4.app.CoreComponentFactory). Suggestion: ajouter outils:replace="android:appComponentFactory"' à l'élément au AndroidManifest.xml:6:5-40:de 19 à remplacer.

102voto

Danfeng Points 763

Vous pouvez utiliser la version précédente des packages d'API des artefacts ou le nouveau Androidx, jamais les deux.

Si vous souhaitez utiliser la version précédente, remplacez vos dépendances par

 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'
}
 

si vous souhaitez utiliser 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'
}
 

62voto

Khemraj Points 8449

Mise À Jour Importante

Android ne sera pas de mise à jour des bibliothèques de support après l' 28.0.0.

Ce sera la dernière version de fonctionnalités sous android.soutien l'emballage, et les développeurs sont encouragés à migrer vers AndroidX 1.0.0.

Donc, l'utilisation de la bibliothèque AndroidX.

  • Ne pas utiliser à la fois le Soutien et AndroidX dans le projet.
  • Votre module de la bibliothèque ou des dépendances peut encore avoir des bibliothèques de prise en charge. Androidx Jetifier va la traiter.
  • Utiliser la version stable de l' androidx ou de toute bibliothèque, parce que l'alpha, beta, rc peut avoir des bugs qui vous ne voulez pas livrés avec votre application.

Dans votre cas

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'
}

44voto

Carlos Santiago Points 520

Ajoute ça:

 tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"
 

à votre demande manifeste

 <application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    tools:replace="android:appComponentFactory"
    android:appComponentFactory="whateverString">
 

J'espère que cela aide

19voto

Douglas Mesquita Points 668

J'ai utilisé cette option:

Avec Android Studio 3.2 et supérieur, vous pouvez migrer rapidement un projet existant pour utiliser AndroidX en sélectionnant Refactor> Migrer vers AndroidX dans la barre de menus.

https://developer.android.com/jetpack/androidx/migrate

6voto

Armysir Points 364

1.Ajoutez ces codes à votre application / build.gradle:

 configurations.all {
   resolutionStrategy.force 'com.android.support:support-v4:26.1.0' // the lib is old dependencies version;       
}
 

Version du SDK et des outils 2.Modified à 28:

 compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28
 

2.Dans votre fichier AndroidManifest.xml, vous devez ajouter deux lignes:

 <application
    android:name=".YourApplication"
    android:appComponentFactory="anystrings be placeholder"
    tools:replace="android:appComponentFactory"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
 

Merci pour la réponse @Carlos Santiago: la bibliothèque de support de conception Android pour l'API 28 (P) ne fonctionne pas

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X