J'ai rencontré deux problèmes principaux dans Android Studio. Tout d'abord, je ne peux pas effectuer copier-coller et couper-coller (ctrl+c - ctrl+v - ctrl+x) capacités 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 mesures que j'ai prises pour essayer de résoudre le problème sont;
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).
MISE À JOUR 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, les 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 de 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 a plus de 500 codes de lignes et l'une des classes non compilées) ne peut pas charger n'importe quoi. 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);
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'
}
MISE À JOUR 1.0 Images
MISE À JOUR des images 2.0
MISE À JOUR -> Il y a un bogue dans les bibliothèques Kotlin avec Windows 10 turc unilingue . (Peut-être que certaines autres distributions Windows en un seul langage 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 lors de l'installation de Windows 10 Pro en anglais .
D'autres développeurs qui utilisent le turc unilingue Windows 10 sont confrontés au même problème sous des angles différents. ( Exemple1 et Exemple2 )
ANCIENNE RÉPONSE
TL; DR -> Le problème concerne les bibliothèques tierces qui sont écrites avec Kotlin . J'ai converti mon Java en Kotlin et toutes les bibliothèques tierces problématiques fonctionnent bien. Le problème concerne environ Java - Kotlin conflit .
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 fonction de suggestion automatique de ces classes corrompues a recommencé à fonctionner.Puis, découvrant les bibliothèques tierces qui posaient problème, 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 . Quand 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 ces bibliothèques ont été écrites avec Kotlin . Une seconde, ne puis-je pas utiliser les bibliothèques Kotlin dans mon Java? Oui, je peux . Je dois ajouter Android.useAndroidX=true
et Android.enableJetifier=true
dans mon gradle.properties, c'est tout. Mais que faire 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 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 de 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 n'a fonctionné que lorsque désactivé) toutes les bibliothèques tierces). 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 problème.
Je vous suggère de l'ouvrir sur un autre ordinateur en le tirant de bitbucket et de voir s'il s'agit du même