web-dev-qa-db-fra.com

La bibliothèque de prise en charge de la conception Android pour API 28 (P) ne fonctionne pas

J'ai configuré avec succès l'environnement SDK Android-P. Lorsque j'essaie d'utiliser la bibliothèque de prise en charge de la conception Android, je suis confronté à des erreurs de génération de projet. Les configurations de projet sont:

IDE: 3.2 Canary 17 API cible: 28 API de compilation: 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 l'erreur de construction échouée est:

La fusion du manifeste a échoué: Attribut application@appComponentFactory valeur = (androidx.core.app.CoreComponentFactory) à partir de [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 est également présent sur [com.Android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 valeur = (Android.support.v4.app.CoreComponentFactory). Suggestion: ajouter 'tools: replace = "Android: appComponentFactory"' à l'élément sur AndroidManifest.xml: 6: 5-40: 19 pour remplacer.

47
Rahul Rastogi

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

Si vous voulez 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 voulez 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'
}
39
Danfeng

Ajoute ça:

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

à votre demande de manifeste

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

j'espère que ça aide

12
Carlos Santiago

J'ai utilisé cette option:

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

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

10
Douglas Mesquita

Dans mon cas, cela fonctionne parfaitement ... J'ai ajouté ci-dessous deux codes de ligne dans le fichier manifeste

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

 Manifest file Example

9
Muhaiminurabir

1.Ajouté ces codes à votre application/build.gradle:

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

2. Version du sdk et des outils modifiée à 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 prise en charge de la conception Android pour API 28 (P) ne fonctionne pas

5
Armysir

La bibliothèque de support de conception pour androidX est implementation 'com.google.Android.material:material:1.0.0'

2
Samir Elekberov

Je traverse cette situation en remplaçant tous les androidx.* par appropiate package name.

changer de ligne 

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'
implementation 'androidx.constraintlayout:constraintlayout:1.1.1'

androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

à

implementation 'com.Android.support:appcompat-v7:28.0.0-alpha3'
implementation 'com.Android.support.constraint:constraint-layout:1.1.1'

androidTestImplementation 'com.Android.support.test:runner:1.0.2'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'

C'EST NOTÉ 

  • supprimer tools:replace="Android:appComponentFactory" de AndroidManifest
2
Lwin Myo Aung

Remarque: vous ne devez pas utiliser les dépendances com.Android.support et com.google.Android.material dans votre application en même temps.

ajouter des composants matériels pour Android

dependencies {
// ...
implementation 'com.google.Android.material:material:1.0.0-beta01'
// ...

}

Si votre application dépend actuellement de la bibliothèque de support de conception d'origine, vous pouvez utiliser l'option Refactoriser pour AndroidX… fournie par Android Studio. Cela mettra à jour les dépendances et le code de votre application pour utiliser les bibliothèques androidx et com.google.Android.material récemment emballées.

Si vous ne souhaitez pas encore basculer vers les nouveaux packages androidx et com.google.Android.material, vous pouvez utiliser les composants de matériau via la dépendance com.Android.support:design:28.0.0-alpha3.

1
Ashutosh

ouvrez le fichier gradle.properties .__ et ajoutez-y ces deux lignes:

Android.useAndroidX = true
Android.enableJetifier = true

nettoyer et construire

1
Lena Bru

Essaye ça:

implementation 'com.Android.support:appcompat-v7:28.0.0-alpha1'
0
Park Eun Neul

Avait un problème similaire. Ajouté dans build.gradle et cela a fonctionné pour moi.

 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
0
Holiday Fun

La documentation Android est claire à ce sujet. Allez à la page ci-dessous.Au dessous, il y a deux colonnes avec des noms "OLD BUILD ARTIFACT" et "artefact de construction AndroidX"

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

Vous avez maintenant de nombreuses dépendances dans gradle.Il suffit de faire correspondre celles avec des artefacts de construction Androidx et de les remplacer dans le dégradé.

Cela ne suffira pas.

Accédez à votre MainActivity (répétez cette opération pour toutes les activités) et supprimez l'activité Word AppCompact dans l'instruction "public class MainActivity", puis écrivez à nouveau le même mot. Mais cette fois, la bibliothèque Android est importée. utilisé (également, supprimez cette instruction d'importation appcompact).

Aussi, allez dans votre fichier de mise en page. Supposons que vous ayez une présentation de contrainte, vous remarquerez alors que la première disposition de contrainte de ligne du fichier xml a quelque chose de lié à appcompact.So suffit de la supprimer et de réécrire la mise en page de contrainte.

répétez cette opération pour autant d'activités et autant de fichiers de mise en page XML.

Mais ne vous inquiétez pas: Android Studio affiche toutes ces erreurs possibles lors de la compilation.

0
bhargav ram

La solution appropriée est celle décrite dans la réponse this .

Vous devez activer jetifier, en ajoutant ces deux lignes à votre fichier gradle.properties:

Android.useAndroidX=true
Android.enableJetifier=true

Cela va fondamentalement échanger les dépendances de la bibliothèque de support Android de vos dépendances de projet avec AndroidX-ones .

Au cas où le gradle.properties n'existe pas, créez simplement un fichier appelé gradle.properties dans votre projet racine et ajoutez-lui les lignes susmentionnées:

root
|--gradle.properties
|--build.gradle
|--settings.gradle
|--app
|----build.gradle
0
dmSherazi

Le code ci-dessous a parfaitement fonctionné avec moi:

dependencies {
    api 'com.Android.support:design:28.0.0-alpha3'

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test:runner:1.1.0-alpha2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2'
}
0
Hasan A Yousef

Google a introduit de nouvelles dépendances AndroidX. Vous devez migrer vers AndroidX, c'est simple. 

J'ai remplacé toutes les dépendances aux dépendances d'AndroidX

Dépendance au design ancien

implementation 'com.Android.support:design:28.0.0'

Nouvelle dépendance à la conception d'AndroidX

implementation 'com.google.Android.material:material:1.0.0-rc01'

vous pouvez trouver les dépendances AndroidX ici https://developer.Android.com/jetpack/androidx/migrate


Option de migration automatique AndroidX (prise en charge sur Android studio 3.3+)

Migrez un projet existant pour utiliser AndroidX en sélectionnant Refactor> Migrer vers AndroidX dans la barre de menus.

0
Amir De