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.
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'
}
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
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.
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
La bibliothèque de support de conception pour androidX est implementation 'com.google.Android.material:material:1.0.0'
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É
tools:replace="Android:appComponentFactory"
de AndroidManifestRemarque: 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.
ouvrez le fichier gradle.properties .__ et ajoutez-y ces deux lignes:
Android.useAndroidX = true
Android.enableJetifier = true
nettoyer et construire
Essaye ça:
implementation 'com.Android.support:appcompat-v7:28.0.0-alpha1'
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
}
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.
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
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'
}
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.