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 , SequenceLayoutFlashbar . 해당 라이브러리를 제거하면 모든 것이 올바르게 작동했습니다. 라이브러리를 제거한 후 내 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.