Không thể thực hiện Sao chép-Dán trong Android Studio


9

Tôi đã phải đối mặt với hai vấn đề chính trong Android Studio. Trước hết tôi không thể thực hiện các khả năng sao chép-dáncắt-dán ( ctrl+ c- ctrl+ v- ctrl+ x) trong một số lớp. Để khắc phục vấn đề đó, tôi bấm vào "invalide cache / restart", nhưng nó lại bị hỏng ngay lập tức.

Vấn đề thứ hai là (tôi nghĩ nó có liên quan đến vấn đề thứ nhất) trình biên dịch không nhận ra các phương thức và thuộc tính đã được xác định. Tự động đề xuất, vv không hoạt động.

Các bước tôi đã thực hiện để cố gắng khắc phục sự cố là;

  1. Tập tin -> bộ nhớ đệm / khởi động lại,
  2. Tệp -> Chế độ tiết kiệm năng lượng -> Tắt,
  3. Đóng tất cả các tab đã mở và khởi động lại mới,
  4. Tệp -> Dự án đồng bộ hóa với tệp Gradle,
  5. Tệp -> Đồng bộ hóa với Hệ thống tệp,
  6. Xóa JDK và cài đặt lại,
  7. Xóa Android Studio và cài đặt lại,
  8. Xóa các tệp SDK đã tải xuống và thư mục ".Android",
  9. Vô hiệu hóa và xóa tất cả các plugin.
  10. Đã kiểm tra sơ đồ sao chép-dán trong Tệp -> Cài đặt -> Sơ đồ bàn phím
  11. Kéo dự án từ bitbucket sang 2 máy tính khác nhau
  12. Tạo dự án mới, sao chép toàn bộ các lớp dự án với NotePad ++ sang Dự án mới
  13. Cố gắng chuyển đổi tất cả các mã Java thành Kotlin, không thể chuyển đổi

Đây là thông số kỹ thuật hệ thống của tôi; Windows 10 Home Single Language (TR), phiên bản 1909. ram 16 GB. Android Studio 3.5.3 và Gradle Phiên bản 3.5.3

Tôi đã đọc tất cả các bài viết về cùng một vấn đề nhưng không có may mắn (Các bài viết chỉ nói về nền tảng MAC và Linux).

CẬP NHẬT 1.0 -> Tôi đã phát hiện ra rằng một số lớp không thể thực hiện các hoạt động được mô tả ở trên, nhưng một số lớp có thể.

Tôi nhận ra rằng, không có biểu tượng nào cho các lớp không thể thực hiện các thao tác tôi đã mô tả ở trên. (Đôi khi, các biểu tượng "J" xuất hiện một cách kỳ diệu và khi tôi nhấp vào một lớp khác, biểu tượng J này sẽ biến mất ngay lập tức.) Tôi nghĩ rằng lớp hoặc hệ thống tệp của Android Studio không nhận ra các tệp này là các lớp.

CẬP NHẬT 2.0 -> Tôi nhận thấy rằng khi tôi nhấp vào phần Cấu trúc của DuoFragment (trong đó có hơn 500 mã dòng và một trong các lớp không được biên dịch) không thể tải bất cứ thứ gì. Là kích thước DuoFragment lớn hơn để xử lý?

Ngoài ra khi tôi kiểm tra phần Build, một số tiến trình không thể chạy (tôi không biết điều này có bình thường hay không);

  • Nhiệm vụ: ứng dụng: compileDebugAidl NO-SOURCE,
  • Nhiệm vụ: ứng dụng: compileDebugRenderscript NO-SOURCE,
  • Nhiệm vụ: ứng dụng: processDebugJavaRes NO-SOURCE

CẬP NHẬT 3.0 ->

Đây là tập tin Gradle của tôi. Tập tin cấp độ dự án:

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

Cấp độ tập tin ứng dụng.

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'

}

Không có gợi ý Sơ đồ bàn phím Phiên bản android Đồng bộ hóa thành công nếu tôi không thêm mã bổ sung

CẬP NHẬT 1.0 Hình ảnh

Các lớp không có biểu tượng hoặc chỉ có biểu tượng "J" không thể thực hiện thao tác

Khi tôi nhấp / mở một lớp khác, biểu tượng "J" biến mất

CẬP NHẬT 2.0 Hình ảnh

Một số quy trình không thể được thực hiện trong phần Xây dựng Không thể tải cấu trúc DuoFragment Tóm tắt mã DuoFragment


Bạn có thể cung cấp một ảnh chụp màn hình đầy đủ của Android Studio của bạn? Có thể đồng bộ hóa xây dựng / phân lớp không thành công (xem Nhật ký sự kiện hoặc Chạy) để phá vỡ chức năng.
JakeSteam

Đã thêm ảnh chụp màn hình đầy đủ của Android Studio @JakeSteam. Đồng bộ hóa lớp là thành công, nếu tôi không thêm bất kỳ đoạn mã bổ sung nào. (Toàn bộ mã dự án của tôi đến từ Bitbucket)
DạyMeJava

Bạn đã kiểm tra xem bản sao và dán có hoạt động ở nơi khác như trình duyệt hoặc trình soạn thảo văn bản không?
Sanket Vekariya

Có nó hoạt động. Nó không thể chỉ hoạt động một số lớp (như tôi đã nói lớp DuoFragment ()) @SanketVekariya
DạyMeJava

Bạn có thể chỉ cho chúng tôi build.gradle của bạn không? (từ cả hai, dự án và mô-đun chính). Bạn đã xác định các vị trí java.source cụ thể cho dự án chưa?
zapotec

Câu trả lời:


1

CẬP NHẬT -> Có lỗi trong thư viện Kotlin với Windows 10 Single Language tiếng Thổ Nhĩ Kỳ . (Có thể một số bản phân phối Windows Ngôn ngữ đơn khác có cùng một vấn đề, tôi chưa biết.) Một số thư viện của Kotlin không thể hoạt động trên hệ điều hành Thổ Nhĩ Kỳ. Tôi đã giải quyết vấn đề này bằng cách cài đặt Windows 10 Pro English .

Các nhà phát triển khác sử dụng Windows 10 Single Language Thổ Nhĩ Kỳ phải đối mặt với cùng một vấn đề với các góc độ khác nhau. ( dụ1Ví dụ2 )

TRẢ LỜI

TL; DR -> Vấn đề là về các thư viện bên thứ ba được viết bằng Kotlin . Tôi đã chuyển đổi dự án Java của mình sang Kotlin và tất cả các thư viện bên thứ ba có vấn đề đều hoạt động tốt. Vấn đề là về xung đột Java - Kotlin .

Tôi muốn chia sẻ cách tôi giải quyết vấn đề cho những người sẽ gặp phải những vấn đề như vậy sau này.

Tôi đã làm tất cả các bước tôi đã đề cập ở trên từng cái một nhưng tôi không thể tìm thấy bất kỳ giải pháp nào và tôi quyết định kiểm tra các thư viện bên thứ ba của mình.

Trước hết, tôi đã vô hiệu hóa tất cả các thư viện của bên thứ ba và xem xét trạng thái của các lớp không nhận ra các phương thức và thuộc tính đã được xác định. Sau khi vô hiệu hóa các thư viện của bên thứ ba và tạo Rebuild Project và Sync Gradle, tính năng Gợi ý tự động của các lớp bị hỏng đó bắt đầu hoạt động trở lại. Sau đó, phát hiện ra các thư viện bên thứ ba có vấn đề, tôi đã kích hoạt từng thư viện của bên thứ ba. Tôi tìm thấy thư viện bên thứ ba đã phá vỡ dự án của tôi.

Có 4 thư viện của bên thứ ba đã phá vỡ dự án của tôi: StickSwitch , ProgressView , SequenceLayoutFlashbar . Khi tôi loại bỏ những thư viện đó, mọi thứ đều hoạt động tốt. Sau khi xóa các thư viện, tập tin Gradle của tôi như dưới đây.

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

Vì vậy, tính năng phổ biến của các thư viện làm hỏng dự án của tôi là gì? Dự án của tôi được viết bằng Java nhưng các thư viện đó được viết bằng Kotlin . Một giây, tôi có thể sử dụng các thư viện Kotlin trong dự án Java của mình không? Vâng, tôi có thể . Tôi phải thêm android.useAndroidX=trueandroid.enableJetifier=truetrong gradle.properies của tôi , đó là nó. Nhưng điều gì sẽ xảy ra nếu tôi đã thêm các dòng đó trong gradle.properations của tôi và nó không hoạt động?

# 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

Tôi không hiểu tại sao các thư viện kotlin không thể làm việc với dự án Java của tôi. Như bạn có thể thấy trong tệp Gradle của mình , tôi đang sử dụng apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'để được hỗ trợ bởi Kotlin.

Làm thế nào tôi đã giải cứu dự án của tôi? Có 2 lựa chọn có sẵn như tôi biết. Mặc dù phương pháp đầu tiên là loại bỏ 4 thư viện bên thứ ba đó và không thể sử dụng chúng, nhưng phương pháp thứ hai là chuyển đổi tất cả các lớp Java thành các lớp Kotlin (tôi đã thử trước đó nhưng nó không hoạt động cho đến khi vô hiệu hóa tất cả các thư viện của bên thứ ba). Tôi đã chọn chuyển đổi tất cả các lớp Java thành các lớp Kotlin. Vì vậy, tôi đã có thể sử dụng 4 thư viện của bên thứ ba đã được đề cập ở trên.

Tôi đã mất 30 ngày để giải quyết vấn đề này. Bây giờ, tôi đang làm việc trên ngôn ngữ Kotlin. Kết quả là, dự án của tôi đang chạy mà không có vấn đề gì.


Tôi nghĩ rằng nó liên quan nhiều hơn đến thực tế của những thư viện (hoặc ứng dụng của bạn) sử dụng androidx hơn là vì Kotlin. Kết quả biên dịch của Kotlin hoàn toàn giống với mã java. Nhìn vào điều này về androidx: developer.android.com/jetpack/androidx/
zapotec

Có tôi đã đọc bài viết nhưng tôi không hiểu vấn đề chính xác của dự án của tôi là gì. @zapotec
DạyMeJava

Thành thật mà nói, nếu đó không phải là vấn đề của bạn, tôi không thể giúp bạn. Nếu bạn đã có "android.useAndroidX = true" và "android.enableJetifier = true" trong gradle.properations của bạn, điều đó không có nghĩa là AndroidStudio của bạn không thể quản lý mã chính xác. Tôi có trong dự án của riêng mình một số thư viện Kotlin (ví dụ OkHttp4) và tôi không cần phải viết lại mã của mình trong Kotlin. Bên cạnh đó, tôi thậm chí không cần thêm plugin kotlin vào tệp gradle của mình ..... Dù sao, thật tuyệt khi bạn có thể giải quyết vấn đề của mình khi tôi chuyển sang Kotlin!
zapotec

Có rất nhiều nhà phát triển sử dụng loại thư viện này cùng nhau. Hầu hết họ không phải đối mặt với bất kỳ vấn đề nhưng tôi làm. Tôi đang cố gắng tìm hiểu xem đó có phải là lỗi AS hay không. Tôi đã kiểm tra kích thước lớp học của mình (có thể hơn 500 dòng trong một đoạn đã phá vỡ dự án của tôi, v.v.) nhưng không hoạt động gì cả. Cuối cùng tôi tìm thấy 2 tùy chọn sửa chữa. Như tôi đã nói trước đây, tôi đã mất 30 ngày để tìm ra vấn đề. Tôi đã không tìm thấy lý do chính xác của vấn đề nhưng tôi đã tìm ra cách khắc phục @zapotec
DạyMeJava

0

Tôi khuyên bạn nên mở nó trên một máy tính khác bằng cách kéo nó từ bitbucket và xem nó có hoạt động như vậy không


Tôi đã kéo dự án với 2 máy tính khác nhau (Android Studio mới cài đặt) nhưng vấn đề tương tự vẫn tồn tại @muxammed. Tôi đã thêm bước này vào danh sách kiểm tra của tôi.
DạyMeJava
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.