wake-up-neo.com

Android-Design-Support-Bibliothek für API 28 (P) funktioniert nicht

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.

47
Rahul Rastogi

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

Wichtiges Update

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

  • Nicht Verwenden Sie beideSupport und AndroidX im Projekt.
  • Ihr Bibliotheksmodul oder Ihre Abhängigkeiten können immer noch Unterstützungsbibliotheken haben.Androidx Jetifier wird damit umgehen.
  • Verwenden Sie eine stabile Version von 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'
}
32
Khemraj

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

12
Carlos Santiago

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.

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

10

In meinem Fall funktioniert das einwandfrei .. Ich habe in der Manifestdatei zwei Zeilencodes hinzugefügt

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

 Manifest file Example

9
Muhaiminurabir

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

5
Armysir

Design Support Bibliothek für AndroidX ist implementation 'com.google.Android.material:material:1.0.0'

2
Samir Elekberov

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 entfernen
2
Lwin Myo Aung

Hinweis: 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.

1
Ashutosh

Öffnen Sie die Datei gradle.properties und fügen Sie diese beiden Zeilen hinzu:

Android.useAndroidX = true
Android.enableJetifier = true

reinigen und bauen

1
Lena Bru

Versuche dies:

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

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
    }
0
Holiday Fun

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.

0
bhargav ram

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
0
dmSherazi

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'
}
0
Hasan A Yousef

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.

0
Amir De