W Android Studio napotkałem dwa główne problemy. Przede wszystkim nie mogę wykonać umiejętności kopiuj-wklej i wycinaj-wklej ( ctrl+ c- ctrl+ v- ctrl+ x) w niektórych klasach. Aby rozwiązać ten problem, klikam „inwaliduj pamięć podręczną / uruchamia się ponownie”, ale natychmiast się psuje.
Drugi problem to (myślę, że jest to związane z pierwszym problemem) kompilator nie rozpoznaje już zdefiniowanych metod i atrybutów. Auto sugestia itp. Nie działa.
Kroki, które podjąłem, aby spróbować rozwiązać problem:
- Plik -> inwalidowe pamięci podręczne / restartuje,
- Plik -> Tryb oszczędzania energii -> Wyłącz,
- Zamknij wszystkie otwarte karty i uruchom ponownie,
- Plik -> Synchronizuj projekt z plikami stopniowymi,
- Plik -> Synchronizacja z systemem plików,
- Usuń JDK i zainstaluj ponownie,
- Usuń Android Studio i zainstaluj ponownie,
- Usuń już pobrane pliki SDK i folder „.Android”,
- Wyłącz i usuń wszystkie wtyczki.
- Zaznaczona mapa klawiszy kopiuj-wklej w Plik -> Ustawienia -> Mapa klawiszy
- Wyciągnąłem projekt z bitbucket na różne 2 komputery
- Utworzono nowy projekt, skopiuj całe klasy projektu za pomocą NotePad ++ do nowego projektu
- Spróbuj przekonwertować wszystkie kody Java na Kotlin, nie można przekonwertować
Oto specyfikacje mojego systemu; Windows 10 Home Single Language (TR), wersja 1909. 16 GB pamięci RAM. Android Studio 3.5.3 i wersja Gradle 3.5.3
Przeczytałem wszystkie posty o tym samym problemie, ale nie ma szczęścia (posty dotyczą tylko platformy MAC i Linux).
AKTUALIZACJA 1.0 -> Odkryłem, że niektóre klasy nie mogą wykonywać operacji opisanych powyżej, ale niektóre klasy mogą.
Uświadomiłem sobie, że nie ma ikon dla klas, które nie mogłyby wykonać operacji opisanych powyżej. (Czasami magicznie pojawiają się ikony „J”, a kiedy kliknąłem inną klasę, ta ikona J znika natychmiast.) Myślę, że grad lub system plików Android Studio nie rozpoznaje tych plików jako klas.
AKTUALIZACJA 2.0 -> Zauważyłem, że kiedy kliknąłem sekcję Struktura DuoFragment (która ma ponad 500 kodów linii i jedną z nieskompilowanych klas) nic nie może załadować. Czy rozmiar DuoFragment jest większy do przetworzenia?
Również po sprawdzeniu sekcji Kompilacja niektóre procesy nie mogą zostać uruchomione (nie wiem, czy to normalne, czy nie);
- Zadanie: aplikacja: compileDebugAidl NO-SOURCE,
- Zadanie: aplikacja: compileDebugRenderscript NO-SOURCE,
- Zadanie: aplikacja: processDebugJavaRes BRAK ŹRÓDŁA
AKTUALIZACJA 3.0 ->
Oto moje pliki Gradle. Plik stopni na poziomie projektu:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Plik Gradle na poziomie aplikacji.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.lotusif.dump2"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.core:core:1.1.0'
// material widgets
implementation 'com.google.android.material:material:1.2.0-alpha03'
// progress bar with text
implementation "com.github.skydoves:progressview:1.0.3"
// sequence progress
implementation 'com.github.transferwise:sequence-layout:1.0.11'
// flash bar
implementation 'com.andrognito.flashbar:flashbar:1.0.2'
// toggle - switch button
implementation 'com.github.GwonHyeok:StickySwitch:0.0.15'
// Custom Toast message
implementation 'com.github.GrenderG:Toasty:1.4.2'
// liquid effect bar
implementation 'com.mikhaellopez:circularfillableloaders:1.3.2'
// bubble tab bar
implementation 'com.fxn769:bubbletabbar:1.0.3'
//glide image library
implementation 'com.github.bumptech.glide:glide:4.10.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
// scaling layout
implementation 'com.github.iammert:ScalingLayout:1.2.1'
// lottie animation
implementation 'com.airbnb.android:lottie:3.3.1'
//Gson
implementation 'com.google.code.gson:gson:2.8.6'
//RxJava
implementation 'io.reactivex.rxjava2:rxjava:2.2.15'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.daimajia.easing:library:2.1@aar'
implementation 'com.daimajia.androidanimations:library:2.3@aar'
//retrofit
implementation 'com.squareup.retrofit2:converter-gson:2.7.1'
implementation 'com.squareup.retrofit2:retrofit:2.7.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.7.1'
}
AKTUALIZACJA 1.0 Obrazy
AKTUALIZACJA 2.0 Obrazy
źródło
Odpowiedzi:
AKTUALIZACJA -> Występuje błąd w bibliotekach Kotlin w systemie Windows 10 Single Language Turkish . (Być może niektóre inne dystrybucje Windows w jednym języku mają ten sam problem, jeszcze nie wiedziałem.) Niektóre biblioteki Kotlina nie mogą działać na tureckim systemie operacyjnym. Rozwiązałem ten problem z instalacją Windows 10 Pro English .
Inni programiści używający Windows 10 Single Language Turkish napotykają ten sam problem z różnymi kątami. ( Przykład 1 i Przykład 2 )
STARA ODPOWIEDŹ
TL; DR -> Problem dotyczy bibliotek stron trzecich napisanych w Kotlinie . Przekształciłem mój projekt Java na Kotlin i wszystkie problematyczne biblioteki stron trzecich działają dobrze. Problem dotyczy konfliktu Java - Kotlin .
Chciałbym podzielić się tym, jak rozwiązałem problem dla tych, którzy później napotkają takie problemy.
Zrobiłem wszystkie kroki, o których wspomniałem powyżej, jeden po drugim, ale nie mogłem znaleźć żadnego rozwiązania i postanowiłem zbadać biblioteki stron trzecich.
Przede wszystkim wyłączyłem wszystkie biblioteki stron trzecich i sprawdziłem status moich klas, które nie rozpoznawały już zdefiniowanych metod i atrybutów. Po wyłączeniu bibliotek stron trzecich i utworzeniu Przebuduj projekt i zsynchronizuj Gradle funkcja automatycznego sugerowania tych uszkodzonych klas znów zaczęła działać. Następnie, odkrywając, które biblioteki stron trzecich były problematyczne, aktywowałem te biblioteki stron trzecich jeden po drugim. Dowiedziałem się, które biblioteki stron trzecich zepsuły mój projekt.
Były 4 biblioteki stron trzecich, które złamały mój projekt: StickySwitch , ProgressView , SequenceLayout i Flashbar . Kiedy usunąłem te biblioteki, wszystko działało poprawnie. Po usunięciu bibliotek mój plik Gradle był jak poniżej.
Jaka była wspólna cecha tych bibliotek, które uszkodziły mój projekt? Mój projekt został napisany w Javie, ale biblioteki zostały napisane w Kotlinie . Jedna sekunda, czy nie mogę używać bibliotek Kotlin w moim projekcie Java? Tak, mogę . Muszę dodać
android.useAndroidX=true
iwandroid.enableJetifier=true
moim gradle.properties , to jest to. Ale co jeśli dodałem już te wiersze do pliku gradle.properties i nie zadziałało?Nie rozumiem, dlaczego biblioteki kotlin nie mogą współpracować z moim projektem Java. Jak widać w moim pliku Gradle , używam
apply plugin: 'kotlin-android'
iapply plugin: 'kotlin-android-extensions'
do obsługi Kotlin.Jak uratowałem mój projekt? Dostępne były 2 opcje, o których wiedziałem. Podczas gdy pierwsza metoda polegała na usunięciu tych 4 bibliotek stron trzecich i nie mogła ich użyć, druga polegała na konwersji wszystkich klas Java na klasy Kotlin (próbowałem już wcześniej, ale działało to dopiero po wyłączeniu wszystkich bibliotek stron trzecich). Wybrałem konwersję wszystkich klas Java na klasy Kotlin. Dzięki temu mogłem korzystać z 4 bibliotek stron trzecich, które zostały wspomniane powyżej.
Rozwiązanie tego problemu zajęło mi 30 dni. Teraz pracuję nad językiem Kotlin. W rezultacie mój projekt działa bez problemu.
źródło
Sugeruję, aby otworzyć go na innym komputerze, wyciągając go z bitbucket i sprawdź, czy działa tak samo
źródło