Ich habe die Android-P SDK-Umgebung erfolgreich konfiguriert. Wenn ich versuche, die Bibliothek für die Unterstützung des Android-Designs zu verwenden, treten Fehler beim Erstellen von Projekten auf. Projektkonfigurationen sind:
IDE: 3.2 Canary 17-Ziel-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'
}
Fehler beim Buildfehler:
Manifestfusion ist fehlgeschlagen: Attribut [email protected] value = (androidx.core.app.CoreComponentFactory) aus [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 ist auch anwesend bei [com.Android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 value = (Android.support.v4.app.CoreComponentFactory). Vorschlag: hinzufügen 'tools: replace = "Android: appComponentFactory"' zum Element at AndroidManifest.xml: 6: 5-40: 19 überschreiben.
Sie können entweder die frühere Version der Artefakte der API-Pakete oder das neue Androidx verwenden, niemals beide.
Wenn Sie die vorherige Version verwenden möchten, ersetzen Sie Ihre Abhängigkeiten durch
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'
}
wenn Sie Androidx verwenden möchten:
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'
}
Android aktualisiert die Unterstützungsbibliotheken nach 28.0.0
nicht.
Dies ist die letzte Feature-Version unter Android.support Verpackung, und Entwickler werden aufgefordert, auf AndroidX 1.0.0 zu migrieren .
Verwenden Sie also die Bibliothek AndroidX .
androidx
oder einer anderen Bibliothek, da Alpha, Beta, RC Fehler enthalten können, die Sie nicht mit Ihrer App versenden möchten.In Ihrem Fall
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'
}
Füge das hinzu:
tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"
auf Ihre Manifestanwendung
<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">
ich hoffe es hilft
Ich habe diese Option genutzt:
Mit Android Studio 3.2 und höher können Sie eine .__ schnell migrieren. Um ein vorhandenes Projekt zur Verwendung von AndroidX zu verwenden, wählen Sie Refactor> Migrate to AndroidX aus der Menüleiste.
1. Fügen Sie diese Codes Ihrer App/build.gradle hinzu:
configurations.all {
resolutionStrategy.force 'com.Android.support:support-v4:26.1.0' // the lib is old dependencies version;
}
2.Modifizierte SDK- und Tools-Version zu 28:
compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion 28
2.In Ihrer AndroidManifest.xml-Datei sollten Sie zwei Zeilen hinzufügen:
<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">
Danke für die Antwort @Carlos Santiago: Android-Design-Support-Bibliothek für API 28 (P) funktioniert nicht
Design Support Bibliothek für AndroidX ist implementation 'com.google.Android.material:material:1.0.0'
Ich überschreite diese Situation, indem ich alle androidx.*
durch appropiate package name
ersetzt.
Ändern Sie Ihre Zeile
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'
zu
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'
NOTED
tools:replace="Android:appComponentFactory"
von AndroidManifest entfernenHinweis: Sie sollten die Abhängigkeiten com.Android.support und com.google.Android.material nicht gleichzeitig in Ihrer App verwenden.
materialkomponenten für Android hinzufügen
dependencies {
// ...
implementation 'com.google.Android.material:material:1.0.0-beta01'
// ...
}
Wenn Ihre App derzeit von der ursprünglichen Design Support Library abhängt, können Sie die von Android Studio bereitgestellte Option Refactor to AndroidX… verwenden. Dadurch werden die Abhängigkeiten und der Code Ihrer App für die Verwendung der neu gepackten Bibliotheken androidx und com.google.Android.material aktualisiert.
Wenn Sie noch nicht auf die neuen Pakete androidx und com.google.Android.material umstellen möchten, können Sie Materialkomponenten über die Abhängigkeit com.Android.support:design:28.0.0-alpha3 verwenden.
Öffnen Sie die Datei gradle.properties und fügen Sie diese beiden Zeilen hinzu:
Android.useAndroidX = true
Android.enableJetifier = true
reinigen und bauen
Versuche dies:
implementation 'com.Android.support:appcompat-v7:28.0.0-alpha1'
Hatte ähnliches Problem. Hinzugefügt in build.gradle und es hat bei mir funktioniert.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Die Android-Dokumentation ist auf dieser Seite übersichtlich. Gehen Sie zur folgenden Seite. Darunter befinden sich zwei Spalten mit den Namen "OLD BUILD ARTIFACT" und "AndroidX-Build-Artefakt"
https://developer.Android.com/jetpack/androidx/migrate
Jetzt gibt es in gradle viele Abhängigkeiten. Entsprechen Sie einfach den mit Androidx erstellten Artefakten und ersetzen Sie sie im gradle.
Das wird nicht reichen.
Gehen Sie zu Ihrer MainActivity (wiederholen Sie dies für alle Aktivitäten) und entfernen Sie die Word AppCompact Activity in der Anweisung "public class MainActivity extended AppCompatActivity" und schreiben Sie dasselbe Word erneut. Diesmal wird jedoch die Androidx-Bibliothek importiert used (entfernen Sie auch diese appcompact-Importanweisung).
Wechseln Sie auch zu Ihrer Layoutdatei. Angenommen, Sie haben ein Constraint-Layout, dann können Sie feststellen, dass das Constraint-Layout der ersten Zeile in der XML-Datei etwas mit appcompact zu tun hat. Löschen Sie es einfach und schreiben Sie das Constraint-Layout erneut. Jetzt wird das Constraint-Layout für Androidx hinzugefügt.
wiederholen Sie dies für so viele Aktivitäten und so viele XML-Layoutdateien.
Aber keine Sorge: Android Studio zeigt beim Kompilieren alle möglichen Fehler an.
Die richtige Lösung finden Sie in this answer.
Sie müssen jetifier
aktivieren, indem Sie diese beiden Zeilen zu Ihrer gradle.properties
-Datei hinzufügen:
Android.useAndroidX=true
Android.enableJetifier=true
Dies wird im Grunde austauschen die Android Support Library Abhängigkeiten in Ihren Projektabhängigkeiten mit AndroidX-Einsen.
Falls der gradle.properties
nicht existiert, erstellen Sie einfach eine Datei mit dem Namen gradle.properties in Ihrem Stammprojekt und fügen Sie die oben genannten Zeilen hinzu:
root
|--gradle.properties
|--build.gradle
|--settings.gradle
|--app
|----build.gradle
Der folgende Code hat bei mir perfekt funktioniert:
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 hat neue AndroidX - Abhängigkeiten eingeführt. Sie müssen zu AndroidX migrieren, das ist einfach.
Ich habe alle Abhängigkeiten zu AndroidX-Abhängigkeiten ersetzt
Alte Designabhängigkeit
implementation 'com.Android.support:design:28.0.0'
Neue AndroidX-Designabhängigkeit
implementation 'com.google.Android.material:material:1.0.0-rc01'
sie finden AndroidX-Abhängigkeiten hier https://developer.Android.com/jetpack/androidx/migrate
Automatische AndroidX-Migrationsoption (wird von Android Studio 3.3 und höher unterstützt)
Migrieren Sie ein vorhandenes Projekt zur Verwendung von AndroidX, indem Sie in der Menüleiste Refactor> Zu AndroidX migrieren auswählen.