Skonfigurowałem środowisko Android-P SDK. Kiedy próbuję skorzystać z biblioteki wsparcia projektowania Androida, napotykam błędy kompilacji projektu. Konfiguracje projektu to:
IDE: 3.2 Canary 17 Docelowy interfejs API: 28 Kompilacyjny interfejs 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'
}
A błąd kompilacji nie powiódł się:
Manifest scalenie nie powiodło się: aplikacja atrybutu @ appComponentFactory value = (androidx.core.app.CoreComponentFactory) z [androidx.core: core: 1.0.0-alpha3] AndroidManifest.xml: 22: 18-86 jest również obecna w [com.android .support: support -atible: 28.0.0-alpha3] AndroidManifest.xml: 22: 18-91 value = (android.support.v4.app.CoreComponentFactory). Sugestia: dodaj 'tools: replace = "android: appComponentFactory"' do elementu w AndroidManifest.xml: 6: 5-40: 19, aby nadpisać.
źródło
Odpowiedzi:
Możesz użyć poprzedniej wersji pakietów interfejsu API artefaktów lub nowego systemu Androidx, nigdy obu.
Jeśli chcesz użyć poprzedniej wersji, zamień swoje zależności na
jeśli chcesz korzystać z Androidx:
źródło
com
nie zastąpi wmaterial
wimplementation
?Ważna aktualizacja
Android nie zaktualizuje bibliotek obsługi po
28.0.0
.Skorzystaj więc z biblioteki AndroidX .
androidx
lub dowolnej biblioteki, ponieważ alfa, beta, rc mogą zawierać błędy, których nie chcesz wysyłać z aplikacją.W Twoim przypadku
źródło
Dodaj:
do aplikacji manifestu
mam nadzieję, że to pomoże
źródło
@string/action_settings
środku?* What went wrong: Execution failed for task ':app:generateDebugBuildConfig'. > org.xml.sax.SAXParseException; systemId: file:/C:/D/code/js/emps_app/android/app/src/main/AndroidManifest.xml; lineNumber: 14; columnNumber: 52; The prefix "tools" for attribute "tools:replace" associated with an element type "application" is not bound.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
Użyłem tej opcji:
https://developer.android.com/jetpack/androidx/migrate
źródło
Google wprowadził nowe AndroidX zależności . Musisz przejść na AndroidX, to proste.
Zastąpiłem wszystkie zależności zależnościami AndroidX
zależności AndroidX można znaleźć tutaj https://developer.android.com/jetpack/androidx/migrate
Opcja automatycznej migracji do AndroidX (obsługiwana w Android Studio 3.3+)
Przeprowadź migrację istniejącego projektu do systemu AndroidX, wybierając opcję Refaktoryzacja> Migracja do AndroidX z paska menu.
źródło
1.Dodaliśmy te kody do aplikacji / build.gradle:
2. Zmodyfikowana wersja SDK i narzędzi do 28:
2. W pliku AndroidManifest.xml należy dodać dwie linie:
Dzięki za odpowiedź @Carlos Santiago: Biblioteka wsparcia projektowania Androida dla API 28 (P) nie działa
źródło
Biblioteka wsparcia projektowania dla androidX to
implementation 'com.google.android.material:material:1.0.0'
źródło
otwórz plik gradle.properties i dodaj do niego te dwie linie:
wyczyść i zbuduj
źródło
Uwaga: nie należy używać w aplikacji zależności com.android.support i com.google.android.material w tym samym czasie.
Dodaj składniki Material Components for Android w pliku build.gradle (app)
Jeśli Twoja aplikacja obecnie zależy od oryginalnej biblioteki wsparcia projektowania, możesz skorzystać z opcji Refactor to AndroidX… udostępnianej przez Android Studio. Spowoduje to zaktualizowanie zależności i kodu aplikacji, aby używały nowo spakowanych bibliotek androidx i com.google.android.material.
Jeśli nie chcesz jeszcze przełączać się na nowe pakiety androidx i com.google.android.material, możesz użyć składników materiału za pośrednictwem zależności com.android.support:design:28.0.0-alpha3.
źródło
Przede wszystkim powinieneś spojrzeć na gradle.properties i te wartości muszą być prawdziwe . Jeśli nie możesz ich zobaczyć, musisz napisać.
Następnie możesz użyć zależności AndroidX w pliku build.gradle (moduł: aplikacja) . Musisz także sprawdzić compileSDKVersion i targetVersion . Powinny być minimum 28. Na przykład używam 29.
A więc przykład zależności androidx:
Musisz więc dokładnie wyszukiwać i czytać. Szczęśliwy kod.
@canerkaseler
źródło
I przekroczenia tej sytuacji poprzez zastąpienie wszystkich
androidx.*
doappropiate package name
.zmień swoją linię
do
ODNOTOWANY
tools:replace="android:appComponentFactory"
z AndroidManifestźródło
Poniższy kod działał ze mną idealnie:
źródło
Spróbuj tego:
źródło
Dokumentacja systemu Android jest jasna. Przejdź do poniższej strony.Poniżej znajdują się dwie kolumny o nazwach „ARTYFAKT STAREGO BUDOWANIA ” i „Artefakt kompilacji AndroidX”
https://developer.android.com/jetpack/androidx/migrate
Teraz masz wiele zależności w gradle, po prostu dopasuj te z artefaktami kompilacji Androidx i zastąp je w gradle.
To nie wystarczy.
Przejdź do MainActivity (powtórz to dla wszystkich działań) i usuń słowo AppCompact Activity w instrukcji „public class MainActivity extends AppCompatActivity” i ponownie napisz to samo słowo. Ale tym razem biblioteka androidx została zaimportowana. Do tej pory plik pomocy appcompact został zaimportowany i używany (również usuń tę instrukcję importu appcompact).
Przejdź również do pliku układu. Załóżmy, że masz układ ograniczeń, wtedy możesz zauważyć, że układ ograniczeń pierwszej linii w pliku xml ma coś związanego z appcompact, więc po prostu go usuń i ponownie napisz Układ ograniczeń, ale teraz zostanie dodany układ ograniczeń związany z androidx.
powtórz to dla tylu działań i tylu plików układu XML.
Ale nie martw się: Android Studio wyświetla wszystkie takie możliwe błędy podczas kompilacji.
źródło
Miałem podobny problem. Dodano w build.gradle i działało dla mnie.
źródło
jeśli chcesz rozwiązać ten problem bez migracji do AndroidX (nie polecam)
ten problem z łączeniem manifestu jest związany z jedną z zależności używających androidX.
musisz zmniejszyć wersję wydania tej zależności. w moim przypadku:
Używałem Google lub Firebase
Muszę zmniejszyć to 15.0.1, aby użyć w bibliotece wsparcia.
źródło
Dodawanie
androidTestImplementation 'androidx.test:runner:1.2.0-alpha05'
działa dla mnie.źródło