Nie można wykonać operacji kopiuj-wklej w Android Studio

9

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:

  1. Plik -> inwalidowe pamięci podręczne / restartuje,
  2. Plik -> Tryb oszczędzania energii -> Wyłącz,
  3. Zamknij wszystkie otwarte karty i uruchom ponownie,
  4. Plik -> Synchronizuj projekt z plikami stopniowymi,
  5. Plik -> Synchronizacja z systemem plików,
  6. Usuń JDK i zainstaluj ponownie,
  7. Usuń Android Studio i zainstaluj ponownie,
  8. Usuń już pobrane pliki SDK i folder „.Android”,
  9. Wyłącz i usuń wszystkie wtyczki.
  10. Zaznaczona mapa klawiszy kopiuj-wklej w Plik -> Ustawienia -> Mapa klawiszy
  11. Wyciągnąłem projekt z bitbucket na różne 2 komputery
  12. Utworzono nowy projekt, skopiuj całe klasy projektu za pomocą NotePad ++ do nowego projektu
  13. 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'

}

Bez sugestii Mapa klawiszy Wersja na Androida Synchronizacja stopniowa powiedzie się, jeśli nie dodam dodatkowego kodu

AKTUALIZACJA 1.0 Obrazy

Klasy, w których nie ma ikon lub mają tylko ikonę „J”, nie mogą wykonywać operacji

Kiedy kliknąłem / otworzyłem inną klasę, ikona „J” zniknęła

AKTUALIZACJA 2.0 Obrazy

Niektórych procesów nie można wykonać w sekcji Kompilacja Nie można załadować struktury DuoFragment Podsumowanie kodu DuoFragment

TeachMeJava
źródło
Czy możesz podać pełny zrzut ekranu swojego Androida Studio? Niepowodzenie synchronizacji kompilacji / gradacji (patrz dziennik zdarzeń lub uruchomienie) może spowodować uszkodzenie funkcji.
JakeSteam,
Dodano pełny zrzut ekranu Android Studio @JakeSteam. Synchronizacja stopniowa powiedzie się, jeśli nie dodam żadnego dodatkowego fragmentu kodu. (Cały mój kod projektu pochodzi z Bitbucket)
TeachMeJava,
czy sprawdziłeś, czy kopiowanie i wklejanie działa gdzie indziej, np. w przeglądarce lub edytorze tekstów itp.?
Sanket Vekariya
Tak to działa. Nie może działać tylko niektóre klasy (jak powiedziałem klasa DuoFragment ()) @SanketVekariya
TeachMeJava
Czy możesz nam pokazać swój build.gradle? (zarówno z projektu, jak i głównego modułu). Czy zdefiniowałeś określone lokalizacje źródła Java dla projektu?
zapotec

Odpowiedzi:

1

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.

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 BUGGY!
    // implementation "com.github.skydoves:progressview:1.0.3"

    // sequence progress BUGGY !
    // implementation 'com.github.transferwise:sequence-layout:1.0.11'

    // flash bar BUGGY !
    // implementation 'com.andrognito.flashbar:flashbar:1.0.2'

    // toggle - switch button BUGGY !
    // 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'

    // android chart library
       implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'

    //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'
}

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=trueiw android.enableJetifier=truemoim gradle.properties , to jest to. Ale co jeśli dodałem już te wiersze do pliku gradle.properties i nie zadziałało?

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true

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'i apply 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.

TeachMeJava
źródło
Myślę, że to było bardziej związane z faktem, że te biblioteki (lub twoja aplikacja) używają Androidax niż z Kotlin. Wynik kompilacji Kotlin jest dokładnie taki sam jak kod Java. Spójrz na ten temat androidx: developer.android.com/jetpack/androidx/...
Zapotekowie
Tak, przeczytałem ten artykuł, ale nie rozumiem, jaki jest dokładnie problem mojego projektu. @zapotec
TeachMeJava
Szczerze mówiąc, jeśli to nie twój problem, nie mogę ci pomóc. Jeśli masz już w pliku gradle.properties „android.useAndroidX = true” i „android.enableJetifier = true”, nie ma sensu, aby Twój AndroidStudio nie mógł poprawnie zarządzać kodem. Mam w swoim projekcie biblioteki Kotlina (na przykład OkHttp4) i nie muszę ponownie pisać kodu w Kotlinie. Poza tym nie muszę nawet dodawać wtyczki kotlin do mojego pliku ocen ... W każdym razie fajnie, że mogłeś rozwiązać problem mojej migracji do Kotlin!
zapotec
Jest tak wielu programistów korzystających z tego rodzaju bibliotek razem. Większość z nich nie ma żadnego problemu, ale ja tak. Próbuję dowiedzieć się, czy to błąd AS, czy nie. Sprawdziłem rozmiary moich klas (może ponad 500 linii w jednym fragmencie zepsuło mój projekt itp.), Ale nic nie działa. Wreszcie znalazłem 2 opcje mocowania. Jak powiedziałem wcześniej, zajęło mi 30 dni, aby rozwiązać problem. Nie znalazłem dokładnej przyczyny problemu, ale znalazłem sposób naprawy @zapotec
TeachMeJava
0

Sugeruję, aby otworzyć go na innym komputerze, wyciągając go z bitbucket i sprawdź, czy działa tak samo

muxammed
źródło
Wyciągnąłem projekt z 2 różnymi (świeżo zainstalowanymi Android Studio) komputerami, ale nadal występuje ten sam problem @muxammed. Dodałem ten krok do mojej listy kontrolnej.
TeachMeJava