Неможливо виконати копіювання-вставку в Android Studio


9

Я зіткнувся з двома основними проблемами в Android Studio. Перш за все, я не можу виконувати здібності copy-paste та cut-paste ( ctrl+ c- ctrl+ v- ctrl+ x) в деяких класах. Щоб виправити цю проблему, я натискаю "недійсний кеш / перезапуск", але він знову ламається.

Друга проблема - (я думаю, це пов'язано з першою проблемою) компілятор не розпізнає вже визначені методи та атрибути. Автопропозиція тощо не працює.

Кроки, які я вжив, щоб спробувати усунути проблему;

  1. Файл -> недійсні кеші / перезавантаження,
  2. Файл -> Режим економії енергії -> Вимкнути,
  3. Закрийте всі відкриті вкладки та новий перезапуск,
  4. Файл -> Синхронізувати проект з файлами Gradle,
  5. Файл -> Синхронізувати з файловою системою,
  6. Видаліть JDK та перевстановіть,
  7. Видаліть Android Studio і перевстановіть,
  8. Видаліть вже завантажені файли SDK та папку ".Android",
  9. Вимкнення та видалення всіх плагінів.
  10. Перевірена копіювальна карта копіювання в меню Файл -> Налаштування -> Клавіатура
  11. Переніс проект з бітбукета на різні 2 комп’ютери
  12. Створено новий проект, скопіюйте цілі класи проекту з NotePad ++ у новий Project
  13. Спробуйте перетворити всі коди Java в Котлін, конвертувати не вдається

Ось мої специфікації системи; Домашня одиночна мова Windows 10 (TR), версія 1909. Оперативної пам’яті 16 ГБ. Android Studio 3.5.3 та Gradle версії 3.5.3

Я прочитав усі публікації про одну і ту ж проблему, але не пощастило (публікації стосуються лише MAC та Linux платформи).

ОНОВЛЕННЯ 1.0 -> Я виявив, що деякі класи не можуть виконувати описані вище операції, але деякі класи можуть.

Я зрозумів, що не існує піктограм для класів, які не можуть виконувати описані вище операції. (Іноді магічно з'являються значки "J", і коли я натиснув інший клас, ця піктограма J негайно зникає.) Я думаю, що gradle або файлова система Android Studio не розпізнає ці файли як класи.

ОНОВЛЕННЯ 2.0 -> Я помітив, що, натиснувши розділ Структура DuoFragment (який містить 500+ кодів рядків і один з некомпільованих класів), нічого не може завантажити. Чи розмір DuoFragment більше для обробки?

Крім того, коли я перевірив розділ Build, деякі процеси не можуть запускатися (я не знаю, нормально це чи ні);

  • Завдання: додаток: compileDebugAidl NO-SOURCE,
  • Завдання: додаток: compileDebugRenderscript NO-SOURCE,
  • Завдання: додаток: processDebugJavaRes НЕ ДЖЕРЕЛО

ОНОВЛЕННЯ 3.0 ->

Ось мої файли Gradle. Файл Gradle на рівні проекту:

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

Файл Gradle на рівні програми.

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'

}

Немає пропозиції Keymap Версія Android Синхронізація Gradle проходить успішно, якщо я не додаю додатковий код

ОНОВЛЕННЯ 1,0 Зображення

Класи, в яких немає піктограм, або лише з символом "J", не можуть робити операції

Коли я натиснув / відкрив інший клас, значок "J" зник

ОНОВЛЕННЯ 2.0 Зображення

Деякий процес неможливо виконати в розділі Збірка Неможливо завантажити структуру DuoFragment Підсумок коду DuoFragment


Чи можете ви надати повний знімок екрана своєї Android Studio? Можливо, не вдалося синхронізувати збірку / Gradle (див. Журнал подій або Виконати), щоб порушити функціональність.
JakeSteam

Додано повний знімок екрану Android Studio @JakeSteam. Синхронізація Gradle проходить успішно, якщо я не додаю додатковий фрагмент коду. (Весь мій код проекту походить з Bitbucket)
TeachMeJava

чи перевірили ви, чи функція копіювання та вставлення працює в іншому місці, як браузер чи текстовий редактор тощо?
Санкет Векарія

Так, це працює. Він не може працювати лише в деяких класах (як я сказав клас DuoFragment ()) @SanketVekariya
TeachMeJava

Чи можете ви показати нам свій build.gradle? (з обох, проекту та основного модуля). Ви визначили конкретні місця розташування java.source для проекту?
zapotec

Відповіді:


1

ОНОВЛЕННЯ -> У бібліотеках Котліна є помилка з Windows 10 Single Language Turkish . (Можливо, деякі інші диспетчери однієї мови Windows мають таку саму проблему, я ще не знав.) Деякі бібліотеки Котліна не можуть працювати в турецькій операційній системі. Я вирішив цю проблему, встановивши Windows 10 Pro English .

Інші розробники, які використовують турецьку мову єдиної мови Windows 10, стикаються з тією ж проблемою під різними кутами. ( Приклад 1 і Приклад 2 )

СТАРИЙ ВІДПОВІДЬ

TL; DR -> Проблема полягає в сторонніх бібліотеках, написаних разом з Kotlin . Я перетворив свій проект Java на Котлін, і всі проблемні сторонні бібліотеки працюють добре. Проблема полягає в конфлікті Java - Котлін .

Я хотів би поділитися тим, як я вирішив проблему для тих, хто пізніше зіткнеться з такими проблемами.

Я зробив всі кроки, про які я згадував вище, один за одним, але не зміг знайти жодного рішення, і вирішив вивчити свої бібліотеки третьої сторони.

Перш за все, я відключив усі сторонні бібліотеки і переглянув стан своїх класів, які не розпізнавали вже визначені методи та атрибути. Після відключення сторонніх бібліотек та створення проекту Rebuild Project та Sync Gradle функція автоматичного навіювання цих пошкоджених класів знову почала працювати. Потім, розкривши, які сторонні бібліотеки були проблематичними, я активував ці сторонні бібліотеки по черзі. Я виявив, які сторонні бібліотеки порушили мій проект.

Було чотири сторонні бібліотеки, які порушили мій проект: StickySwitch , ProgressView , SequenceLayout та Flashbar . Коли я видалив ці бібліотеки, все працювало правильно. Після видалення бібліотек мій файл Gradle був як показано нижче.

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

Отже, що було спільним у тих бібліотеках, які зіпсували мій проект? Мій проект був написаний на Java, але бібліотеки були написані разом з Котліном . За секунду, чи не можу я використовувати бібліотеки Котліна в проекті Java? Так, я можу . Я маю додати android.useAndroidX=trueі android.enableJetifier=trueв своєму gradle.properties , це все. Але що робити, якщо я вже додав ці рядки в мій gradle.properties і він не працював?

# 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

Я не зрозумів, чому бібліотеки kotlin не можуть працювати з моїм проектом Java. Як ви бачите у моєму файлі Gradle , я використовую apply plugin: 'kotlin-android'і apply plugin: 'kotlin-android-extensions'для підтримки Kotlin.

Як я врятував свій проект? Як я знав, були 2 доступні варіанти. У той час як перший метод полягав у тому, щоб видалити ці 4 сторонні бібліотеки і не міг їх використовувати, другий - перетворити всі класи Java на класи Котліна (я пробував це раніше, але він не працював, поки не вимкнули всі сторонні бібліотеки). Я вирішив перетворити всі класи Java в класи Котліна. Таким чином, мені вдалося скористатися 4-ма сторонніми бібліотеками, про які було сказано вище.

На вирішення цієї проблеми мені знадобилося 30 днів. Зараз я працюю над мовою Котліна. Як результат, мій проект працює без жодних проблем.


Я думаю, це було більше пов'язано з тим, що ті бібліотеки (або ваш додаток) використовують androidx, ніж через Котліна. Результат компіляції Котліна точно такий же, як і код java. Подивіться на це про androidx: developer.android.com/jetpack/androidx/…
zapotec

Так, я прочитав статтю, але не розумію, яка саме проблема мого проекту. @zapotec
TeachMeJava

Чесно кажучи, якщо це не ваша проблема, я не можу вам допомогти. Якщо у вас вже були "android.useAndroidX = true" і "android.enableJetifier = true" у своїх gradle.properties, не має сенсу, що ваш AndroidStudio не може правильно керувати кодом. У своєму власному проекті є кілька бібліотек Котліна (наприклад, OkHttp4), і мені не потрібно переписувати свій код у Котліні. Крім того, мені навіть не потрібно додавати плагін kotlin до мого файлу gradle ..... У будь-якому випадку, приємно, що ви могли вирішити вашу проблему моєї міграції до Котліна!
zapotec

Є так багато розробників, які використовують цей вид бібліотек разом. Більшість з них не стикається з жодною проблемою, але я. Я намагаюся з’ясувати, чи це AS-помилка чи ні. Я перевірив розміри своїх класів (можливо, 500+ рядків в одному фрагменті зламали мій проект тощо), але нічого не працює. Нарешті я знайшов 2 варіанти фіксації. Як я вже говорив раніше, на вирішення проблеми знадобилося 30 днів. Я не знайшов точної причини проблеми, але знайшов спосіб виправлення @zapotec
TeachMeJava

0

Я пропоную вам відкрити його на іншому комп’ютері, витягнувши його з бітбукета, і побачити, чи він діє так само


Я взяв проект з двома різними (свіжо встановленими Android Studio) комп'ютерами, але однакова проблема все ще існує @muxammed. Цей крок я додав у свій контрольний список.
TeachMeJava
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.