Impossible d'effectuer un copier-coller dans Android Studio

9

J'ai rencontré deux problèmes principaux dans Android Studio. Tout d'abord, je ne peux pas exécuter les capacités copier-coller et couper-coller ( ctrl+ c- ctrl+ v- ctrl+ x) dans certaines classes. Pour résoudre ce problème, je clique sur "caches / redémarrages invalides", mais il se décompose à nouveau immédiatement.

Le deuxième problème est (je pense que c'est lié au premier problème) que le compilateur ne reconnaît pas les méthodes et les attributs déjà définis. La suggestion automatique, etc. ne fonctionne pas.

Les étapes que j'ai prises pour essayer de résoudre le problème sont;

  1. Fichier -> caches / redémarrages invalides,
  2. Fichier -> Mode d'économie d'énergie -> Désactiver,
  3. Fermez tous les onglets ouverts et redémarrez à nouveau,
  4. Fichier -> Projet de synchronisation avec les fichiers Gradle,
  5. Fichier -> Synchroniser avec le système de fichiers,
  6. Supprimez JDK et réinstallez,
  7. Supprimez Android Studio et réinstallez,
  8. Supprimer les fichiers SDK déjà téléchargés et le dossier ".Android",
  9. Désactivez et supprimez tous les plugins.
  10. Keymap copier-coller vérifié dans Fichier -> Paramètres -> Keymap
  11. Tiré le projet de bitbucket vers différents 2 ordinateurs
  12. Création d'un nouveau projet, copie de classes de projet entières avec NotePad ++ dans un nouveau projet
  13. Essayez de convertir tous les codes Java en Kotlin, impossible de convertir

Voici mes spécifications système; Windows 10 Home Single Language (TR), version 1909. 16 Go de RAM. Android Studio 3.5.3 et Gradle version 3.5.3

J'ai lu tous les articles sur le même problème mais il n'y a pas de chance (les articles ne concernent que les plates-formes MAC et Linux).

UPDATE 1.0 -> J'ai découvert que certaines classes ne peuvent pas effectuer les opérations décrites ci-dessus, mais certaines classes le peuvent.

J'ai réalisé que, Il n'y a pas d'icônes pour les classes qui ne peuvent pas faire les opérations que j'ai décrites ci-dessus. (Parfois, des icônes "J" apparaissent comme par magie et lorsque je clique sur une autre classe, cette icône J disparaît immédiatement.) Je pense que gradle ou le système de fichiers d'Android Studio ne reconnaît pas ces fichiers en tant que classes.

MISE À JOUR 2.0 -> J'ai remarqué que lorsque j'ai cliqué sur la section Structure de DuoFragment (qui contient plus de 500 codes de lignes et l'une des classes non compilées) ne peut rien charger. La taille de DuoFragment est-elle plus grande à traiter?

De plus, lorsque j'ai vérifié la section Build, certains processus ne peuvent pas s'exécuter (je ne sais pas si cela est normal ou non);

  • Tâche: application: compileDebugAidl NO-SOURCE,
  • Tâche: application: compileDebugRenderscript NO-SOURCE,
  • Tâche: application: processDebugJavaRes NO-SOURCE

MISE À JOUR 3.0 ->

Voici mes fichiers Gradle. Fichier Gradle au niveau du projet:

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

Fichier Gradle au niveau de l'application.

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'

}

Aucune suggestion Keymap Version Android La synchronisation Gradle réussit si je n'ajoute pas de code supplémentaire

MISE À JOUR 1.0 Images

Les classes il n'y a pas d'icônes ou ont seulement l'icône "J" ne peuvent pas faire d'opérations

Lorsque j'ai cliqué / ouvert une autre classe, l'icône "J" a disparu

UPDATE 2.0 Images

Certains processus ne peuvent pas être effectués dans la section Build Impossible de charger la structure DuoFragment Résumé du code DuoFragment

TeachMeJava
la source
Pouvez-vous fournir une capture d'écran complète de votre Android Studio? Il est possible qu'une synchronisation de génération / gradle échouée (voir Journal des événements ou Exécution) brise la fonctionnalité.
JakeSteam
Ajout d'une capture d'écran complète d'Android Studio @JakeSteam. La synchronisation Gradle réussit, si je n'ajoute aucun extrait de code supplémentaire. (Tout mon code de projet vient de Bitbucket)
TeachMeJava
avez-vous vérifié si le copier-coller fonctionne ailleurs comme un navigateur ou un éditeur de texte, etc.?
Sanket Vekariya
Oui cela fonctionne. Cela ne peut pas fonctionner que certaines classes (comme je l'ai dit classe DuoFragment ()) @SanketVekariya
TeachMeJava
Pouvez-vous nous montrer votre build.gradle? (à la fois du projet et du module principal). Avez-vous défini des emplacements java.source spécifiques pour le projet?
zapotèque

Réponses:

1

MISE À JOUR -> Il y a un bogue dans les bibliothèques Kotlin avec Windows 10 Single Language Turkish . (Peut-être que certaines autres distributions Windows en une seule langue ont le même problème, je ne le sais pas encore.) Certaines bibliothèques de Kotlin ne peuvent pas fonctionner sur le système d'exploitation turc. J'ai résolu ce problème avec l'installation de Windows 10 Pro en anglais .

Les autres développeurs qui utilisent le turc unilingue Windows 10 sont confrontés au même problème sous des angles différents. ( Exemple 1 et Exemple 2 )

RÉPONSE ANCIENNE

TL; DR -> Le problème concerne les bibliothèques tierces écrites avec Kotlin . J'ai converti mon projet Java en Kotlin et toutes les bibliothèques tierces problématiques fonctionnent bien. Le problème concerne le conflit Java - Kotlin .

Je voudrais partager comment j'ai résolu le problème pour ceux qui seront confrontés à de tels problèmes plus tard.

J'ai fait toutes les étapes que j'ai mentionnées ci-dessus une par une mais je n'ai trouvé aucune solution et j'ai décidé d'examiner mes bibliothèques tierces.

Tout d'abord, j'ai désactivé toutes les bibliothèques tierces et regardé le statut de mes classes qui ne reconnaissaient pas les méthodes et les attributs déjà définis. Après avoir désactivé les bibliothèques tierces et créé Rebuild Project et Sync Gradle, la fonctionnalité de suggestion automatique de ces classes corrompues a recommencé à fonctionner.Puis, découvrant quelles bibliothèques tierces étaient problématiques, j'ai activé ces bibliothèques tierces une par une. J'ai trouvé les bibliothèques tierces qui ont interrompu mon projet.

Il y avait 4 bibliothèques tierces qui ont cassé mon projet: StickySwitch , ProgressView , SequenceLayout et Flashbar . Lorsque j'ai supprimé ces bibliothèques, tout fonctionnait bien. Après avoir supprimé les bibliothèques, mon fichier Gradle était comme ci-dessous.

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

Alors, quelle était la caractéristique commune de ces bibliothèques qui corrompent mon projet? Mon projet a été écrit avec Java mais les bibliothèques ont été écrites avec Kotlin . Une seconde, ne puis-je pas utiliser les bibliothèques Kotlin dans mon projet Java? Oui, je peux . Je dois ajouter android.useAndroidX=trueet android.enableJetifier=truedans mes gradle.properties , c'est tout. Mais que se passe-t-il si j'ai déjà ajouté ces lignes dans mon gradle.properties et que cela n'a pas fonctionné?

# 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

Je n'ai pas compris pourquoi les bibliothèques kotlin ne peuvent pas fonctionner avec mon projet Java. Comme vous pouvez le voir dans mon fichier Gradle , j'utilise apply plugin: 'kotlin-android'et apply plugin: 'kotlin-android-extensions'pour le support Kotlin.

Comment j'ai sauvé mon projet? Il y avait 2 options disponibles comme je le savais. Alors que la première méthode consistait à supprimer ces 4 bibliothèques tierces et ne pouvait pas les utiliser, la seconde à convertir toutes les classes Java en classes Kotlin (je l'ai essayé avant mais cela ne fonctionnait pas jusqu'à ce que toutes les bibliothèques tierces soient désactivées). J'ai choisi de convertir toutes les classes Java en classes Kotlin. Ainsi, j'ai pu utiliser 4 bibliothèques tierces mentionnées ci-dessus.

Il m'a fallu 30 jours pour résoudre ce problème. Maintenant, je travaille sur la langue Kotlin. En conséquence, mon projet s'exécute sans aucun problème.

TeachMeJava
la source
Je pense que c'était plus lié au fait que ces bibliothèques (ou votre application) utilisent androidx qu'à cause de Kotlin. Kotlin compile le résultat est exactement le même que le code java. Regardez ceci sur androidx: developer.android.com/jetpack/androidx/…
zapotec
Oui j'ai lu l'article mais je ne comprends pas quel est le problème exact de mon projet. @zapotec
TeachMeJava
Honnêtement, si ce n'est pas votre problème, je ne peux pas vous aider. Si vous aviez déjà "android.useAndroidX = true" et "android.enableJetifier = true" dans vos gradle.properties, cela n'a aucun sens que votre AndroidStudio ne puisse pas gérer le code correctement. J'ai dans mon propre projet des bibliothèques Kotlin (par exemple OkHttp4), et je n'ai pas besoin de réécrire mon code dans Kotlin. De plus, je n'ai même pas besoin d'ajouter le plugin kotlin à mon fichier gradle ..... Quoi qu'il en soit, c'est bien que vous puissiez résoudre votre problème lors de ma migration vers Kotlin!
zapotèque le
Il y a tellement de développeurs qui utilisent ce type de bibliothèques ensemble. La plupart d'entre eux ne rencontrent aucun problème, mais moi si. J'essaie de savoir si c'est un bug AS ou non. J'ai vérifié la taille de mes classes (peut-être plus de 500 lignes en un seul fragment ont cassé mon projet, etc.) mais ne fonctionne pas. Enfin, j'ai trouvé 2 options de fixation. Comme je l'ai déjà dit, il m'a fallu 30 jours pour comprendre le problème. Je n'ai pas trouvé la raison exacte du problème, mais j'ai trouvé un moyen de corriger @zapotec
TeachMeJava
0

Je vous suggère de l'ouvrir sur un autre ordinateur en le tirant de bitbucket et de voir s'il agit de la même façon

muxammed
la source
J'ai tiré le projet avec 2 ordinateurs différents (Android Studio installé récemment) mais le même problème existe toujours @muxammed. J'ai ajouté cette étape à ma liste de contrôle.
TeachMeJava