Android Studio'da Kopyala Yapıştır yapılamıyor


9

Android Studio'da iki ana sorunla karşılaştım. Öncelikle bazı sınıflarda kopyala-yapıştır ve kes-yapıştır ( ctrl+ c- ctrl+ v- ctrl+ x) becerilerini yerine getiremiyorum. Bu sorunu çözmek için, "önbellekleri geçersiz kıl / yeniden başlat" ı tıklıyorum, ancak hemen tekrar bozuldu.

İkinci sorun (ilk sorunla ilgili olduğunu düşünüyorum) derleyici zaten tanımlanmış yöntemleri ve nitelikleri tanımıyor. Otomatik öneri vb. Çalışmıyor.

Sorunu çözmek için attığım adımlar;

  1. Dosya -> geçersiz önbellek / yeniden başlatma,
  2. Dosya -> Güç Tasarrufu Modu -> Devre Dışı Bırak,
  3. Tüm açık sekmeleri kapatın ve yeni baştan başlatın,
  4. Dosya -> Proje'yi Gradle Dosyaları ile Senkronize Et,
  5. Dosya -> Dosya Sistemi ile Senkronize Et,
  6. JDK'yı silin ve yeniden yükleyin,
  7. Android Studio'yu silin ve yeniden yükleyin,
  8. Önceden indirilmiş SDK dosyalarını ve ".Android" klasörünü silin,
  9. Tüm eklentileri devre dışı bırakın ve silin.
  10. Dosya -> Ayarlar -> Anahtar Haritası'ndaki kopyala yapıştır tuş eşlemesini kontrol et
  11. Projeyi bitbucket'ten farklı 2 bilgisayara çekti
  12. Yeni proje oluşturuldu, NotePad ++ ile tüm proje sınıflarını yeni Project'e kopyalayın
  13. Tüm Java kodlarını Kotlin'e dönüştürmeye çalışın, dönüştüremezsiniz

İşte benim sistem özellikleri; Windows 10 Ev Tek Dil (TR), sürüm 1909. 16 GB ram. Android Studio 3.5.3 ve Sürüm Sürüm 3.5.3

Aynı sorunla ilgili tüm yayınları okudum ama şans yok (Mesajlar sadece MAC ve Linux platformuyla ilgili).

GÜNCELLEME 1.0 -> Bazı sınıfların yukarıda açıklanan işlemleri yapamayacağını, ancak bazı sınıfların yapabileceğini keşfettim.

Yukarıda anlattığım işlemleri yapamayan sınıflar için herhangi bir simge olmadığını fark ettim. (Bazen sihirli bir şekilde "J" simgeleri görünür ve başka bir sınıfı tıkladığımda, bu J simgesi hemen kaybolur.) Android Studio'nun sınıf veya dosya sisteminin bu dosyaları sınıf olarak tanımadığını düşünüyorum.

UPDATE 2.0 -> DuoFragment (500+ satır kodları ve derlenmemiş sınıflardan biri olan) Yapı bölümünü tıklattığımda hiçbir şey yükleyemediğini fark ettim. DuoFragment boyutu işlenmek için daha mı büyük?

Ayrıca Build bölümünü işaretlediğimde, bazı işlemler çalışamaz (bunun normal olup olmadığını bilmiyorum);

  • Görev: app: compileDebugAidl NO-SOURCE,
  • Görev: app: compileDebugRenderscript NO-SOURCE,
  • Görev: app: processDebugJavaRes NO-SOURCE

GÜNCELLEME 3.0 ->

İşte Gradle dosyalarım. Proje Seviyesi Gradle dosyası:

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

Uygulama düzeyinde Gradle dosyası.

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'

}

Öneri Yok Tuşeşlem Android Sürümü Ek kod eklemezsem Gradle senkronizasyonu başarıyla gerçekleşir

UPDATE 1.0 Görüntüler

Simgeler yok veya yalnızca "J" simgesi olan sınıflar işlem yapamıyor

Başka bir sınıfı tıkladığımda / açtığımda, "J" simgesi kayboldu

UPDATE 2.0 Görüntüler

Derleme bölümünde bazı işlemler yapılamaz DuoFragment yapısı yüklenemiyor DuoFragment kod özeti


Android Studio'nuzun tam ekran görüntüsünü sağlayabilir misiniz? Başarısız bir derleme / derecelendirme senkronizasyonu (bkz. Olay Günlüğü veya Çalıştırma) işlevselliğini bozabilir.
JakeSteam

Android Studio @ JakeSteam'in tam ekran görüntüsü eklendi. Ek kod snippet'i eklemezsem Gradle senkronizasyonu başarılı olur. (Tüm proje kodum Bitbucket'ten geliyor)
TeachMeJava

kopyala ve yapıştır işleminin tarayıcı veya metin düzenleyici gibi başka bir yerde çalışıp çalışmadığını kontrol ettiniz mi?
Sanket Vekariya

Evet çalışıyor. Sadece bazı sınıflar çalışamaz (Dediğim gibi DuoFragment () sınıfı) @SanketVekariya
TeachMeJava

Bize build.gradle'ınızı gösterebilir misiniz? (hem projeden hem de ana modülden). Proje için belirli java.source konumları tanımladınız mı?
zapotec

Yanıtlar:


1

GÜNCELLEME -> Windows 10 Tek Dilde Türkçe olan Kotlin kütüphanelerinde bir hata var . (Belki diğer Tek Dilli Windows dağıtımlarının bazılarının aynı sorunu vardır, henüz bilmiyorum.) Kotlin'in bazı kütüphaneleri Türk işletim sisteminde çalışamaz. Windows 10 Pro English kurulumu ile bu sorunu çözdüm .

Windows 10 Tek Dilli Türkçe kullanan diğer geliştiriciler aynı sorunla farklı açılardan karşı karşıyadır. ( Örnek1 ve Örnek2 )

ESKİ CEVAP

TL; DR -> Sorun Kotlin ile yazılmış üçüncü taraf kütüphaneler hakkındadır . Java projemi Kotlin'e dönüştürdüm ve tüm sorunlu üçüncü taraf kütüphaneleri iyi çalışıyor. Sorun Java - Kotlin çatışmasıyla ilgili .

Daha sonra bu tür sorunlarla karşılaşacak olanlar için sorunu nasıl çözdüğümü paylaşmak istiyorum.

Yukarıda bahsettiğim tüm adımları tek tek yaptım ama herhangi bir çözüm bulamadım ve üçüncü taraf kütüphanelerimi incelemeye karar verdim.

Her şeyden önce, tüm üçüncü taraf kütüphanelerini devre dışı bıraktım ve zaten tanımlanmış yöntemleri ve nitelikleri tanımayan sınıflarımın durumuna baktım. Üçüncü taraf kitaplıklarını devre dışı bıraktıktan ve Project ve Sync Gradle'ı yeniden oluşturduktan sonra, bu bozuk sınıfların Otomatik Öneri özelliği tekrar çalışmaya başladı. Hangi üçüncü taraf kütüphanelerinin projemi bozduğunu buldum.

Projemi bozan 4 üçüncü taraf kitaplığı vardı: StickySwitch , ProgressView , SequenceLayout ve Flashbar . Bu kütüphaneleri kaldırdığımda her şey yolunda gitti. Kütüphaneleri kaldırdıktan sonra Gradle dosyam aşağıdaki gibiydi.

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

Peki, projemi bozan kütüphanelerin ortak özelliği neydi? Projem Java ile yazılmış ancak kütüphaneler Kotlin ile yazılmış . Bir saniye, Kotlin kütüphanelerini Java projemde kullanamaz mıyım? Evet yapabilirim . Ben eklemek zorunda android.useAndroidX=trueve android.enableJetifier=truebenim gradle.properties , bu kadar. Ama bu satırları gradle.properties'e eklediysem ve çalışmadıysa ne olur?

# 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 kütüphanelerinin neden Java projemle çalışamayacağını anlamadım. Gradle dosyamda görebileceğiniz gibi Kotlin desteği için apply plugin: 'kotlin-android've kullanıyorum apply plugin: 'kotlin-android-extensions'.

Projemi nasıl kurtardım? Bildiğim gibi 2 mevcut seçenek vardı. Birinci yöntem, bu 4 üçüncü taraf kütüphanesini kaldırmak ve bunları kullanamamak, ikincisi ise tüm Java sınıflarını Kotlin sınıflarına dönüştürmekti (daha önce denedim ama tüm üçüncü taraf kütüphanelerini devre dışı bırakana kadar işe yaramadı). Tüm Java sınıflarını Kotlin sınıflarına dönüştürmeyi seçtim. Böylece, yukarıda bahsedilen 4 üçüncü taraf kütüphanesini kullanabildim.

Bu sorunu çözmek 30 günümü aldı. Şimdi Kotlin dili üzerinde çalışıyorum. Sonuç olarak, projem sorunsuz çalışıyor.


Bence androidlin kullanan bu kütüphanelerin (ya da uygulamanızın) Kotlin'e göre daha fazla olduğunu düşünüyorum. Kotlin derleme sonucu java koduyla tamamen aynıdır. Androidx hakkında şuna bakın: developer.android.com/jetpack/androidx/…
zapotec

Evet makaleyi okudum ama projemin tam sorunun ne olduğunu anlamıyorum. @zapotec
TeachMeJava

Dürüst olmak gerekirse, bu senin problemin değilse, sana yardım edemem. Gradle.properties dosyasında zaten "android.useAndroidX = true" ve "android.enableJetifier = true" varsa, AndroidStudio'unuzun kodu doğru bir şekilde yönetememesi mantıklı değildir. Kendi projemde bazı Kotlin kütüphaneleri var (örneğin OkHttp4) ve Kotlin'de kodumu yeniden yazmama gerek yok. Ayrıca, kotlin eklentisini gradle dosyama eklememe bile gerek yok ..... Her neyse, Kotlin'e taşınmam sorununuzu çözebilmeniz güzel!
zapotec

Bu tür kütüphaneleri birlikte kullanan birçok geliştirici var. Birçoğu herhangi bir sorunla karşılaşmıyor ama ben yaşıyorum. Bu bir AS hata olup olmadığını anlamaya çalışıyorum. Sınıflarımı kontrol ettim (belki tek parça halinde 500+ satır projemi bozdu vb.) Ama hiçbir şey çalışmıyor. Sonunda 2 sabitleme seçeneği buldum. Daha önce de söylediğim gibi, sorunu çözmek 30 günümü aldı. Sorunun tam nedenini bulamadım ama sabitleme yolunu buldum @zapotec
TeachMeJava

0

Bitbucket'ten çekerek başka bir bilgisayarda açmanızı ve aynı davranıp davranmadığını görmenizi öneririm


Projeyi 2 farklı (yeni yüklenen Android Studio) bilgisayarla çektim ama aynı sorun hala muxammed. Bu adımı kontrol listeme ekledim.
TeachMeJava
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.