Android Studio에서 복사하여 붙여 넣기를 수행 할 수 없습니다


9

Android Studio에서 두 가지 주요 문제에 직면했습니다. 우선 일부 클래스에서는 복사 붙여 넣기 및 잘라 내기 붙여 넣기 ( 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 ++를 사용하여 전체 프로젝트 클래스를 새 프로젝트에 복사
  13. 모든 Java 코드를 Kotlin으로 변환하려고합니다. 변환 할 수 없습니다

내 시스템 사양은 다음과 같습니다. Windows 10 홈 단일 언어 (TR), 버전 1909. 16GB 램. Android Studio 3.5.3 및 Gradle 버전 3.5.3

나는 같은 문제에 관한 모든 게시물을 읽었지만 운이 없다 (게시물은 MAC 및 Linux 플랫폼에 관한 것임).

업데이트 1.0-> 일부 클래스는 위에서 설명한 작업을 수행 할 수 없지만 일부 클래스는 수행 할 수 있음을 발견했습니다.

나는 위에서 설명한 작업을 수행 할 수없는 클래스 아이콘이 없다는 것을 깨달았습니다. (때로는 마술처럼 "J"아이콘이 나타나고 다른 클래스를 클릭하면이 J 아이콘이 즉시 사라집니다.) Android Studio의 gradle 또는 파일 시스템이 이러한 파일을 클래스로 인식하지 못한다고 생각합니다.

업데이트 2.0-> DuoFragment의 구조 섹션을 클릭하면 (500 개 이상의 라인 코드가 있고 컴파일되지 않은 클래스 중 하나) 아무것도로드 할 수 없습니다. DuoFragment 크기가 처리하기에 더 큽니까?

또한 빌드 섹션을 확인했을 때 일부 프로세스를 실행할 수 없습니다 (정상적인 지 여부는 알 수 없음).

  • 작업 : app : compileDebugAidl NO-SOURCE,
  • 작업 : app : compileDebugRenderscript NO-SOURCE,
  • 작업 : app : processDebugJavaRes NO-SOURCE

업데이트 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'

}

제안 없음 키맵 안드로이드 버전 코드를 추가하지 않으면 Gradle 동기화가 성공합니다

1.0 이미지 업데이트

아이콘이 없거나 "J"아이콘 만있는 클래스는 작업을 수행 할 수 없습니다

다른 수업을 클릭 / 열었을 때 "J"아이콘이 사라졌습니다

2.0 이미지 업데이트

빌드 섹션에서 일부 프로세스를 수행 할 수 없습니다 DuoFragment 구조를로드 할 수 없습니다 DuoFragment 코드 요약


Android Studio의 전체 스크린 샷을 제공 할 수 있습니까? 실패한 빌드 / 그라들 동기화 (이벤트 로그 또는 실행 참조)가 기능을 중단 할 수 있습니다.
— JakeSteam

Android Studio @JakeSteam의 전체 스크린 샷을 추가했습니다. 추가 코드 스 니펫을 추가하지 않으면 Gradle 동기화가 성공적으로 완료됩니다. (내 전체 프로젝트 코드는 Bitbucket에서 온 것입니다)
— TeachMeJava

복사 나 붙여 넣기가 브라우저 나 텍스트 편집기 등과 같은 다른 곳에서 작동하는지 확인 했습니까?
— Sanket Vekariya

예, 작동합니다. @SanketVekariya
— TeachMeJava

build.gradle을 보여줄 수 있습니까? (프로젝트와 메인 모듈 모두에서). 프로젝트의 특정 java.source 위치를 정의 했습니까?
— zapotec

답변:


1

업데이트-> Windows 10 단일 언어 터키어를 사용하는 Kotlin 라이브러리에 버그가 있습니다 . Kotlin의 일부 라이브러리는 터키어 운영 체제에서 작동 할 수 없습니다. Windows 10 Pro English 를 설치하여이 문제를 해결했습니다 .

Windows 10 단일 언어 터키어를 사용하는 다른 개발자는 다른 각도에서 동일한 문제에 직면합니다. (실시 예 1 및 실시 예 2 )

오래된 답변

TL; DR- > 문제는 Kotlin 으로 작성된 타사 라이브러리에 관한 것입니다 . Java 프로젝트를 Kotlin으로 변환했으며 문제가있는 모든 타사 라이브러리가 제대로 작동합니다. 문제는 Java-Kotlin 충돌에 관한 것 입니다.

나중에 그러한 문제에 직면하게 될 사람들을 위해 어떻게 문제를 해결했는지 나누고 싶습니다.

위에서 언급 한 모든 단계를 하나씩 수행했지만 해결책을 찾지 못했으며 제 3 자 라이브러리를 조사하기로 결정했습니다.

우선, 나는 모든 타사 라이브러리를 비활성화하고 이미 정의 된 메소드와 속성을 인식하지 못하는 클래스의 상태를 살펴 보았습니다. 타사 라이브러리를 비활성화하고 Rebuild Project 및 Sync Gradle을 만든 후 손상된 클래스의 자동 제안 기능이 다시 작동하기 시작했습니다. 어떤 타사 라이브러리가 내 프로젝트를 중단 시켰습니다.

내 프로젝트를 중단 한 4 개의 타사 라이브러리가있었습니다 : 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 로 작성 되었지만 해당 라이브러리는 Kotlin 으로 작성되었습니다 . Java 프로젝트에서 Kotlin 라이브러리를 사용할 수 없습니까? 예, 가능 합니다. 나는 추가해야 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 파일 에서 볼 수 있듯이 Kotlin 지원을 사용 apply plugin: 'kotlin-android'하고 apply plugin: 'kotlin-android-extensions'있습니다.

프로젝트를 어떻게 구했습니까? 내가 아는 것처럼 사용 가능한 두 가지 옵션이 있습니다. 첫 번째 방법은 4 개의 타사 라이브러리를 제거하고 사용할 수 없었지만 두 번째 방법은 모든 Java 클래스를 Kotlin 클래스로 변환하는 것입니다 (이전에 시도했지만 모든 타사 라이브러리를 비활성화 할 때까지 작동하지 않았습니다). 모든 Java 클래스를 Kotlin 클래스로 변환하기로 결정했습니다. 따라서 위에서 언급 한 4 개의 타사 라이브러리를 사용할 수있었습니다.

이 문제를 해결하는 데 30 일이 걸렸습니다. 이제 저는 Kotlin 언어로 작업하고 있습니다. 결과적으로 프로젝트가 아무런 문제없이 실행됩니다.


Kotlin보다 androidx를 사용하는 라이브러리 (또는 앱)의 사실과 더 관련이 있다고 생각합니다. Kotlin 컴파일 결과는 Java 코드와 정확히 동일합니다. androidx에 대한 이것 좀보세요 : developer.android.com/jetpack/androidx/…
— zapotec

예, 기사를 읽었지만 프로젝트의 정확한 문제가 무엇인지 이해하지 못합니다. @zapotec
— TeachMeJava

솔직히, 그것이 당신의 문제가 아닌 경우, 나는 당신을 도울 수 없습니다. gradle.properties에 이미 "android.useAndroidX = true"및 "android.enableJetifier = true"가있는 경우 AndroidStudio가 코드를 올바르게 관리 할 수 ​​없다는 것은 의미가 없습니다. 내 프로젝트에는 Kotlin 라이브러리 (예 : OkHttp4)가 있으며 Kotlin에서 코드를 다시 작성할 필요가 없습니다. 게다가, 나는 gradle 파일에 kotlin 플러그인을 추가 할 필요조차 없습니다 ..... 어쨌든 Kotlin으로 마이그레이션하는 문제를 해결할 수있어서 좋습니다!
— zapotec

많은 종류의 개발자들이 이런 종류의 라이브러리를 함께 사용합니다. 그들 대부분은 아무런 문제가 없지만 나는 그렇습니다. 그것이 AS 버그인지 아닌지 알아 내려고 노력하고 있습니다. 내 클래스 크기를 확인했지만 (단일 조각의 500+ 줄이 내 프로젝트 등을 중단했을 수 있습니다) 아무 것도 작동하지 않습니다. 마지막으로 2 가지 고정 옵션을 찾았습니다. 앞에서 말했듯이 문제를 파악하는 데 30 일이 걸렸습니다. 문제의 정확한 원인을 찾지 못했지만 @zapotec
— TeachMeJava

0

비트 버킷에서 당겨서 다른 컴퓨터에서 열어서 같은지 확인하십시오.


2 개의 다른 (새로 설치된 Android Studio) 컴퓨터로 프로젝트를 가져 왔지만 @muxammed와 동일한 문제가 여전히 존재합니다. 이 단계를 체크리스트에 추가했습니다.
— TeachMeJava
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.