Android Studio "sembol çözülemiyor" diyor, ancak proje derleniyor


97

Build.gradle'da aşağıdakileri kullanarak AndroidStudio'da twitter4j'yi içe aktarıyorum:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

Proje iyi bir şekilde derleniyor ve twitter nesnelerini sorunsuz bir şekilde oluşturabiliyorum. Ancak, Android stüdyosunda, kitaplığın "sembolü çözemediğini" gösteren herhangi bir şey kırmızı renkte görüntülenir. Android Studio'nun kitaplığı tanıması için ne yapmam gerekiyor?

Projeyi yeniden oluşturmayı denedim, ./gradlew clean ve projemi kapatıp yeniden açtım.



2018 yılı, Android Studio 3+: Android Studio ve Gradle bazen aynı fikirde değil. çözüm burada: stackoverflow.com/questions/50313885/…
user1506104

Bir egzersiz projesini Android Studio'ya aktardıktan sonra da aynı sorunu yaşadım. Android Studio içe aktarıldığında bana uyarılar verdi ve sdk sürümünü güncellememi önerdi, bu yüzden tavsiyelere uydum. Bundan sonra bir şey artık uyumlu değildi, bu yüzden Android Studio başka bir şeyin başka bir sürümünü değiştirmeyi önerdi. Tüm bu tavsiyeleri takip ettikten sonra aynı "sembol bulamıyorum" sorunları yaşadım. Değişimi tersine çevirdim, projeyi tekrar içe aktardım ve bu sefer Android Studio'nun ipuçlarını takip etmedim. Bundan sonra hatalar gitti. O programın önerilerini körü körüne takip ederken dikkatli olun.
David

Yanıtlar:


237

Bunun işe yarayıp yaramayacağı hakkında hiçbir fikrim yok ama şu ana kadar tek düşüncem: AS içindeki dosya ağacında jar dosyasına sağ tıklayın ve "Kitaplık olarak ekle ..."

DÜZENLEME: "Dosya" -> "Önbellekleri Geçersiz Kıl ..." yapabilir ve bunu düzeltmek için "Geçersiz Kıl ve Yeniden Başlat" seçeneğini seçebilirsiniz.

DÜZENLEME 2: Bu düzeltme, tüm benzer olaylar için çalışmalıdır ve twitter4j'ye özgü bir çözüm değildir.


Kavanozu sağ tıkladığımda bunu bir seçenek olarak anlamıyorum. 0.2.13 koşuyorum.
TG-T

Bu muhtemelen bunu zaten yaptığınız anlamına gelir. Dosya> Proje Yapısı'nı deneyin ve modüller düğümünde .jar dosyasını gördüğünüzü doğrulayın.
DoyDoy

11
Önbellekleri geçersiz kılmak ve yeniden başlatmak benim için işe yaramıyor. Ayrıca android stüdyosunu yeniden yüklemeyi ve projeyi yeniden içe aktarmayı denedim. Bu çok can sıkıcı ...
clocksmith

3
"Dosya" -> "Önbellekleri Geçersiz Kıl ..." günümü kurtardı. Bu konuda çok zaman harcadım. Bu yanıt neden en iyi arama sonucu değildi? Çok teşekkür ederim!
Eric Cochran

1
minnettarlığımı
savurmak

33

Dosya> Proje Yapısı> (projenizi seçin)> Bağımlılıklar'da bağımlılıkların sırasını değiştirmeyi deneyin.

Geçersiz Kılma Önbellekleri benim için işe yaramadı, ancak yapımı listenin altından en üste taşımak işe yaradı.


Bağımlılıkların sırasını değiştirmek bana yardımcı oluyor, cevaplarda verilen tüm çözümleri denedim, sadece seninki yardımcı oluyor, teşekkürler.
wqycsu

Sadece bir bağımlılığı yukarı taşımak benim için hile yaptı! (Android Studio 3.0.1).
Sébastien

Evet, hangi bağımlılığı taşıdığınız önemli değil, sadece herhangi birinin sırasını değiştirin, bu Android Studio 3.3 için de geçerli.
karique

12

Bu benim için çalıştı.

Proje panelinde proje adına sağ tıklayın Open Module Settingsve açılır menüden seçim yapın.

ardından Compile SDK Versionmevcut minimum sürüme değiştirin (projede ayarladığınız minimum sdk sürümü). android stüdyosunun her şeyi yüklemesini bekleyin.

Size bazı hatalar verecek, bunları görmezden gelin.

Şimdi java dosyanıza gidin ve android stüdyosu içe aktarmanızı önerecektir

ithal android.support.v4.app.FragmentActivity;

İçe aktarın, ardından geri dönün Open Module Settingsve derleme sdk sürümünü önceki sürümüne değiştirin.

İşlerin yüklenmesini ve tamamlanmasını bekleyin.


harika bir iş. benim durumumda, Android Studio bana tüm SDK Sınıflarının çözülemediğini bildirdi (Dize, Tamsayı, TextView vb. dahil). Bundan önce aStudio, projelerimi derlemek için kullandığım android-14 SDK'yı bulamadığını da söyledi. Bunu görmezden geldim, bu yüzden sorunlar çıktı. sonunda, bu cevabı buldum ve takip ettim, derleme sdk versiyonunu değiştirdim sonra çalıştı. bana zaman kazandırdığın için teşekkürler.
VinceStyling

Now go to your java file and android studio will suggest you importBenim durumumda değil
NineCattoRules

9

Benimki içe aktarılan kütüphane projesinden kaynaklandı, build.gradle'a bir şey yazın ve tekrar silin ve şimdi senkronizasyona basın, hata gitti.


6

Bazı Android kitaplıklarıma bağlı olarak (Android Studio 3.0 ve 3.1.1 kullanarak) Android uygulamamda da bu sorunu yaşadım.

Bir kitaplığı güncellediğimde ve uygulamaya geri döndüğümde, bir Gradle Sync'i tetiklediğimde, Android Studio kitaplıkta yaptığım kod değişikliklerini algılayamadı. Derleme iyi çalıştı, ancak Android Studio kitaplığı kullanan bazı kodlarda kırmızı hata satırları gösterdi.

Araştırdıktan sonra, bunun gradle'ın kitaplıklarımın eski bir derlenmiş versiyonunu göstermeye devam etmesinden kaynaklandığını anladım. Projenize / .idea / libraries / 'e giderseniz, kitaplıklarınızın derlenmiş sürümüne bağlantı içeren bir xml dosyası listesi görürsünüz. Bu dosyalar Gradle__artifacts _ *. Xml ile başlar (burada * kitaplıklarınızın adıdır).

Dolayısıyla, Android Studio'nun kitaplıklarınızın en son sürümünü alması için, bu Gradle__artifacts _ *. Xml dosyalarını silmeniz gerekir ve Android Studio, kitaplıklarınızın en son derlenmiş sürümüne işaret ederek onları yeniden oluşturacaktır.

"Gradle senkronizasyonu" nu her tıkladığınızda bunu manuel olarak yapmak istemiyorsanız (bunu kim yapmak ister ki ...), bu küçük gradle görevini uygulamanızın build.gradle dosyasına ekleyebilirsiniz.

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

Ve uygulamanızın bir gradle senkronizasyonu yapmadan önce bu görevi her zaman yürütmesi için, Gradle penceresine gitmeniz, ardından Uygulamanız / Görevler / diğer / altında "deleteArtifacts" görevini bulmanız, sağ tıklamanız ve "Yürüt Senkronizasyondan Önce "(aşağıya bakın).

Görev yürütmeyi yapılandırmak için gradle penceresi

Şimdi, Gradle senkronizasyonunu her yaptığınızda, Android Studio kitaplıklarınızın en son sürümünü kullanmak zorunda kalacak.


5

Bu problemi yaşadığımda (kırmızı renk kodları ama doğru çalışıyorlar) projemde;

İlk olarak, bunu (Dosya -> Nakitleri Göster) -> (Geçersiz Kıl ve Yeniden Başlat) yaptım.

Son olarak, build.gradle dosyamı uygulamamda yeniden senkronize ediyorum. Sorun çözüldükten sonra.


3

Invalidate Caches / Restart bu sefer benim için çalışmadı.

Bunun gibi bir çözüm buldum:

  1. Kaldır compile ***veya implementation ***build.gradle içinde hat.

  2. Temizleyin ve yeniden inşa edin. Burada hatalar gündeme getirilmelidir.

  3. 1. adımdaki satırı build.gradle'a geri ekleyin.

  4. Temizleyin ve yeniden inşa edin.

Tuhaf...


2

Bu sorun benim için Glass projem Android Studio'nun varsayılan konumuna yüklenmiş SDK'yı kullanmadığında oldu. Her şeyi yeniden indirmekten kaçınmaya çalıştığım için daha önce ADT'de sahip olduğum başka bir konumu kullanıyordum. Projeyi Android Studio'nun yükleme konumundaki SDK konumuna geri götürdüğümde sorun ortadan kalktı.


Evet, sanırım bu da iyi bir haykırış: varsayılan olarak android stüdyosu tüm SDK'ların varsayılan android stüdyo kurulum dizinine kurulmasına karar verecek. Bu kalıba uymayan herhangi bir şey varsa, bunun değiştirilmesi gerekecektir.
doydoy

2

Bu sorunu birkaç gündür yaşadım ve sonunda anladım! Diğer tüm çözümler btw benim için işe yaramadı.

Çözüm: Proje yolumda özel karakterler vardı!

Sadece bunlardan hiçbirine sahip olmadığınızdan emin olun ve iyi olmalısınız veya diğer çözümlerden en az biri sizin için çalışmalıdır.

Umarım bu birine yardımcı olur!


Lütfen gibi özel karakterler içeren bir proje yolunuz olup olmadığını kontrol edin! (ünlem işareti). Yaşadığım benzer bir sorunda stackoverflow.com/questions/32477067/… , temel neden buydu. Çoğu Java uygulaması, bu tür özel karakterlere tolerans göstermiyor gibi görünmektedir (örneğin, terminalden bir 'gradlew temizliği' yapmak başarısız olur ve bir RunTimeException oluşturur.). İnternette yayınlanan diğer çözümlerin hiçbiri bana yardımcı olmadı. Ama bir kez kaldırdım! yoldan ve temiz bir derleme yaptı, Android Studio sihirli bir şekilde çalıştı.
Jim C

İNANILMAZ VAY! Teşekkürler :)
Josep Escobar

1

Son zamanlarda Android Studio 1.3 ile aynı sorunu yaşadım. Çalışan tek çözüm .gradle ve .idea klasörlerini kaldırmak ve projeyi Android Studio'ya yeniden aktarmaktı.


1

Kabul edilen cevabı deneyen ve başarılı olamayanlar için,

Kabul edilen cevabı da denedim ve benim için çalışmadım. Bundan sonra, projemi depo ile güncelledim ve projeyi senkronize ettim ve çözülemedi uyarıları gitti.




0

Benim durumumda, GUI'yi kullanarak yeni bir dosya oluşturmuş ve dosya içinde bir arayüz tanımlamıştım. Dosya bir "java" dosyası olmadığı için bu sembol hatasını almaya devam ettim. Üzerinde hiçbir uzantısı yoktu.

Dosya uzantısını ".java" olarak değiştirdikten sonra, sistem sembolleri doğru bir şekilde bulur.


0

Benim durumumda jar dosyasında META-INF / MANIFEST.MF dosyası yoktu. Birini ekledikten sonra işe yaradı!


0

AndroidStudio 2.2.3 ile çalışan benim durumum için çözüm, gradle sarmalayıcısını / dağıtımını Gradle Ayarlarında yerel olanı kullanacak şekilde değiştirmekti ("tavsiye edilmesine" rağmen). görüntü açıklamasını buraya girin


0

Bu benim için çalıştı - (Dosya -> Nakitleri Göster) -> (Geçersiz Kıl ve Yeniden Başlat).


0

Önbelleği geçersiz kılmayı / yeniden başlatmayı veya Projeyi temizlemeyi -> projeyi yeniden oluşturmayı denedim. Bunlar benim için işe yaramadı.

Nihai çözüm, IDE'nin sol tarafında Proje modu altında açık Proje penceresiydi, .gradle ve .idea klasörlerini silin, SONRA önbellekleri geçersiz kılıp yeniden başlatabilirsiniz. Bu onu düzeltti.


0

Build.gradle içinde uygulama için derlemeyi değiştirin.


0

Dil enjeksiyon ayarlarını değiştirmek benim için çalıştı.

İmleci altı çizili kırmızı kodlardan herhangi birinin üzerine getirin ve Alt + Enter

görüntü açıklamasını buraya girin

Şimdi seçin Language Injection Settingsve aşağıda gösterildiği gibi bir pencere açılacaktır.

görüntü açıklamasını buraya girin

Seçili seçeneğin işaretini kaldırın ve Tamam'ı tıklayın.

görüntü açıklamasını buraya girin

Umarım bu birine yardımcı olur.


0

Tüm dosyaları kaldırdığımda başıma geldi .gradle/caches, ardından bağımlılıkları stüdyo indirdi. Bağımlılıklar içinde gösterilmiyor, External Librariesancak Uygulamayı başarıyla oluşturabilirim. rebuild clean Invalidate and Restartetkisi yok. Sorunu şu adımlarla çözdüm:

  • Android Studio'yu tamamen kapatın
  • .ideaProjenizdeki paketi kaldırın
  • Android Studio'yu yeniden başlatın

0

Bunu denedim ama benim için hiçbir şey işe yaramadı:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

Benim durumumda şunu yapın:

  • Delete all files in .idea/libraries folder
  • Rebuild Project

0

Benim için gradle-wrapper.properties'i 4.4'e güncelledim

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

0

En kolay yolu buldum

Studio'da sözdizimi hatasına neden olan kitaplığı belirleyin.

Örnek için eğer AppCompatActivityo zaman AppCompat Bağımlılığı Üzerindeki operasyon altında gerçekleştirecek hata gösteriliyor.

  • Sözdizimi hatası ve Senkronizasyon gösteren bağımlılığı kaldırın.
  • Tekrar ekle ve Senkronize et.

İşte bu, hata gitti!

Önce

Önce

Sonra

Sonra


0

Yukarıdaki cevapların hiçbiri benim için işe yaramıyor.

Pek çok denemeden sonra Project / build.gradle'da com.android.tools.build:gradle'ı 2.3.0'dan 3.0.1'e yükselttim ve işe yarıyor.

Sanırım com.android.tools.build:gradle sürümü AndroidStudio sürümüyle eşleşmeli ve AS sürümüm 3.2.1


0

Tüm dosyaları kapatmak ve Android Studio'yu kapatmak benim için çalışıyor.


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.