Android Studio mengatakan "tidak dapat menyelesaikan simbol" tetapi proyek dikompilasi

97

Saya mengimpor twitter4j di AndroidStudio, menggunakan yang berikut ini di build.gradle saya:

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

Proyek ini terkompilasi dengan baik, dan saya dapat membuat objek twitter tanpa masalah. Namun, di Android studio, apa pun yang mereferensikan library tersebut menunjukkan "tidak dapat menyelesaikan simbol" dan ditampilkan dengan warna merah. Apa yang harus saya lakukan agar Android Studio mengenali pustaka?

Saya telah mencoba membangun kembali proyek, ./gradlew clean, dan menutup serta membuka kembali proyek saya.

TG-T
sumber
tahun 2018, Android Studio 3+: terkadang, Android Studio dan Gradle tidak setuju. solusi di sini: stackoverflow.com/questions/50313885/…
user1506104
Saya mengalami masalah yang sama setelah mengimpor proyek latihan ke Android Studio. Ketika diimpor Android Studio memberi saya peringatan dan menyarankan untuk memperbarui versi sdk, jadi saya mengikuti saran itu. Setelah itu ada sesuatu yang tidak kompatibel lagi, jadi Android Studio menyarankan untuk mengubah versi lain dari yang lain. Setelah mengikuti semua saran ini, saya mengalami masalah "tidak dapat menemukan simbol" yang sama. Saya membalikkan perubahan, mengimpor proyek lagi dan tidak mengikuti petunjuk dari Android Studio kali ini. Setelah itu kesalahan hilang. Berhati-hatilah dengan mengikuti saran program itu secara membabi buta.
David

Jawaban:

237

Tidak tahu apakah ini akan berhasil atau tidak tetapi satu-satunya pemikiran saya sejauh ini: klik kanan file jar di pohon file dalam AS dan pilih "Tambahkan sebagai perpustakaan ..."

EDIT: Anda dapat melakukan "File" -> "Invalidate Cache ...", dan pilih opsi "Invalidate and Restart" untuk memperbaikinya.

EDIT 2: Perbaikan ini seharusnya berfungsi untuk semua insiden serupa dan bukan resolusi khusus twitter4j.

doydoy
sumber
Saya tidak mendapatkan itu sebagai opsi saat saya mengklik kanan toples. Saya menjalankan 0.2.13.
TG-T
Ini mungkin berarti Anda telah melakukan ini. Coba File> Project Structure dan konfirmasikan bahwa Anda melihat file .jar di node modul.
doydoy
11
Memvalidasi cache dan memulai ulang tidak berhasil untuk saya. Saya juga mencoba menginstal ulang studio android dan mengimpor ulang proyek. Ini sangat menyebalkan ...
tukang jam
3
The "File" -> "Invalidate Cache ..." baru saja menyelamatkan hari saya. Saya membuang banyak waktu untuk masalah ini. Mengapa jawaban ini bukan hasil pencarian teratas? Terima kasih banyak!
Eric Cochran
1
melemparkan dalam rasa terima kasih saya
Yevgeny Simkin
33

Coba ubah urutan dependensi di File> Struktur Proyek> (pilih proyek Anda)> Dependensi.

Cache yang tidak valid tidak berfungsi untuk saya, tetapi memindahkan build saya dari bagian bawah daftar ke atas berhasil.

Nauraushaun
sumber
Mengubah urutan ketergantungan membantu saya, saya mencoba semua solusi yang diberikan dalam jawaban, hanya milik Anda yang membantu saya, terima kasih.
wqycsu
Memindahkan hanya satu ketergantungan ke atas berhasil bagi saya! (Android Studio 3.0.1).
Sébastien
Ya tidak penting ketergantungan apa yang Anda pindahkan, ubah saja urutan siapa pun, ini juga berfungsi untuk Android Studio 3.3.
karique
12

Inilah yang berhasil bagi saya.

Di panel Project, klik kanan pada nama proyek, dan pilih Open Module Settingsdari menu popup.

kemudian ubah Compile SDK Versionke versi minimum yang tersedia (versi sdk minimum yang Anda setel dalam proyek). tunggu studio android memuat semuanya.

Ini akan memberi Anda beberapa kesalahan, abaikan itu.

Sekarang buka file java Anda dan studio android akan menyarankan Anda mengimpor

impor android.support.v4.app.FragmentActivity;

Impor, lalu kembali Open Module Settingsdan ubah versi kompilasi sdk kembali ke versi sebelumnya.

Tunggu hal-hal dimuat dan voila.

Georgi Dimitrov
sumber
itu pekerjaan yang brilian. dalam kasus saya, Android Studio melaporkan saya bahwa semua Kelas SDK tidak dapat diselesaikan (termasuk String, Integer, TextView, dll.). sebelum itu, aStudio juga memberi tahu saya bahwa dia tidak dapat menemukan Android-14 SDK yang saya gunakan untuk mengompilasi proyek saya. Saya mengabaikannya sehingga masalah terjadi. akhirnya, saya menemukan jawaban ini dan ikuti, ubah versi kompilasi sdk kemudian berfungsi. terima kasih untuk menghemat waktu saya.
VinceStyling
Now go to your java file and android studio will suggest you importTidak dalam kasus saya
NineCattoRules
9

Untuk milik saya disebabkan oleh proyek perpustakaan yang diimpor, ketik sesuatu di build.gradle dan hapus lagi dan tekan sinkronkan sekarang, kesalahannya hilang.

Beeing Jk
sumber
6

Saya juga mengalami masalah ini dengan aplikasi Android saya tergantung pada beberapa pustaka Android saya sendiri (menggunakan Android Studio 3.0 dan 3.1.1).

Setiap kali saya memperbarui lib dan kembali ke aplikasi, memicu Sinkronisasi Gradle, Android Studio tidak dapat mendeteksi perubahan kode yang saya buat ke lib. Kompilasi berfungsi dengan baik, tetapi Android Studio menunjukkan garis kesalahan merah pada beberapa kode menggunakan lib.

Setelah menyelidiki, saya menemukan bahwa itu karena gradle terus menunjuk ke versi lama terkompilasi dari libs saya. Jika Anda pergi ke yourProject / .idea / libraries / Anda akan melihat daftar file xml yang berisi link ke versi terkompilasi dari libs Anda. File ini dimulai dengan Gradle__artifacts _ *. Xml (dengan * adalah nama libs Anda).

Jadi agar Android Studio mendapatkan versi terbaru libs Anda, Anda perlu menghapus file Gradle__artifacts _ *. Xml ini, dan Android Studio akan membuatnya kembali, dengan menunjuk ke versi terkompilasi terbaru dari lib Anda.

Jika Anda tidak ingin melakukannya secara manual setiap kali mengeklik "Gradle sync" (siapa yang ingin melakukannya ...), Anda dapat menambahkan tugas gradle kecil ini di file build.gradle aplikasi Anda.

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()
        }
    }
}

Dan agar aplikasi Anda selalu menjalankan tugas ini sebelum melakukan sinkronisasi gradle, Anda hanya perlu membuka jendela Gradle, lalu temukan tugas "deleteArtifacts" di bawah Aplikasi / Tasks / other /, klik kanan padanya dan pilih "Execute Sebelum Sinkronisasi "(lihat di bawah).

Jendela Gradle untuk mengonfigurasi eksekusi tugas

Sekarang, setiap kali Anda melakukan sinkronisasi Gradle, Android Studio akan dipaksa untuk menggunakan versi terbaru libs Anda.

nah0y
sumber
5

Ketika saya mengalami masalah ini (kode warna merah tetapi berfungsi dengan benar) dalam proyek saya;

Pertama, saya membuatnya (File -> Indicate Cashes) -> (Invalidate and Restart).

Terakhir, saya menyinkronkan ulang file build.gradle saya di aplikasi saya. Setelah masalah teratasi.

oguzhan
sumber
3

Invalidate Caches / Restart tidak berhasil untuk saya kali ini.

Menemukan solusi seperti ini:

  1. Hapus baris compile ***atau implementation ***di build.gradle.

  2. Bersihkan dan bangun kembali. Kesalahan harus diangkat di sini.

  3. Tambahkan baris pada langkah 1 kembali ke build.gradle.

  4. Bersihkan dan bangun kembali.

Aneh...

ZhangLei
sumber
2

Masalah ini terjadi pada saya ketika proyek Glass saya tidak menggunakan SDK yang dipasang di lokasi default Android Studio. Saya menggunakan lokasi lain yang saya miliki sebelumnya dari ADT, karena saya mencoba untuk tidak mengunduh ulang semuanya. Setelah saya mengarahkan proyek kembali ke lokasi SDK di lokasi pemasangan Android Studio, masalahnya hilang.

DaveTrux
sumber
Ya saya rasa itu juga teriakan yang bagus: secara default android studio akan memutuskan semua SDK diinstal di direktori instal default android studio. Ini perlu diubah jika ada yang tidak mengikuti pola itu.
doydoy
2

Saya mengalami masalah ini selama beberapa hari sekarang dan akhirnya mengetahuinya! Semua solusi lain tidak berhasil untuk saya btw.

Solusi: Saya memiliki karakter khusus di jalur proyek saya!

Pastikan untuk tidak memilikinya dan Anda akan baik-baik saja atau setidaknya salah satu solusi lain akan bekerja untuk Anda.

Semoga ini bisa membantu seseorang!

jeruk bali
sumber
Silakan periksa apakah Anda memiliki jalur proyek yang memiliki karakter khusus seperti! (tanda seru). Dalam masalah serupa yang saya alami stackoverflow.com/questions/32477067/… , ini adalah penyebab utamanya. Banyak aplikasi Java yang tampaknya tidak mentolerir karakter khusus tersebut (misalnya melakukan 'pembersihan bertahap' dari terminal akan gagal dan memunculkan RunTimeException.). Tidak ada solusi lain yang diposting online yang membantu saya. Tapi, setelah saya menghapus! dari jalur dan melakukan build bersih, Android Studio bekerja secara ajaib.
Jim C
WOW LUAR BIASA! Terima kasih :)
Josep Escobar
1

Saya mengalami masalah yang sama baru-baru ini dengan Android Studio 1.3. Satu-satunya solusi yang berfungsi adalah menghapus folder .gradle dan .idea dan mengimpor ulang proyek ke Android Studio.

ticofab.dll
sumber
1

Bagi mereka, yang mencoba jawaban yang diterima dan tidak berhasil,

Saya juga mencoba jawaban yang diterima dan tidak berhasil untuk saya. Setelah itu, saya memperbarui proyek saya dengan repositori dan menyinkronkan proyek dan peringatan yang tidak dapat diselesaikan hilang.

drJava
sumber
0

Dalam kasus saya, saya telah membuat file baru menggunakan GUI dan menentukan antarmuka di dalam file. Saya terus mendapatkan kesalahan simbol ini karena file tersebut bukan file "java". Itu tidak memiliki ekstensi sama sekali.

Setelah mengubah ekstensi file menjadi ".java", sistem menemukan simbol dengan benar.

pengguna3549463
sumber
0

Dalam kasus saya, file jar tidak memiliki file META-INF / MANIFEST.MF. Setelah menambahkan satu, itu berhasil!

Mahe
sumber
0

Untuk kasus saya bekerja dengan AndroidStudio 2.2.3, solusinya adalah mengubah pembungkus / distribusi gradle untuk menggunakan yang lokal di Pengaturan Gradle (meskipun "direkomendasikan"). masukkan deskripsi gambar di sini

Hack06
sumber
0

Ini bekerja untuk saya-- (File -> Indicate Cashes) -> (Invalidate and Restart).

Shubhamhackz
sumber
0

Saya mencoba Invalidate cache / restart atau clean Project -> rebuild project. Ini tidak berhasil untuk saya.

Solusi terakhir adalah membuka jendela Project di sisi kiri IDE, di bawah mode Project, hapus folder .gradle dan .idea, MAKA Anda dapat membatalkan cache dan memulai ulang. Ini memperbaikinya.


sumber
0

Ubah kompilasi menjadi implementasi di build.gradle.

Raulp
sumber
0

Mengubah pengaturan injeksi bahasa berhasil untuk saya.

Tempatkan kursor pada salah satu kode bergaris bawah merah dan Alt + Enter

masukkan deskripsi gambar di sini

Sekarang pilih Language Injection Settingsdan jendela akan terbuka seperti yang ditunjukkan di bawah ini.

masukkan deskripsi gambar di sini

Hapus centang opsi yang dipilih dan klik Ok

masukkan deskripsi gambar di sini

Semoga ini bisa membantu seseorang.

Tricky Bay
sumber
0

Itu terjadi pada saya ketika saya menghapus seluruh file .gradle/caches, kemudian studio mengunduh ketergantungan. Ketergantungan tidak ditampilkan di External Librariestetapi saya dapat membangun Aplikasi dengan sukses. rebuild clean Invalidate and Restarttidak berpengaruh. Saya memecahkan masalah dengan langkah-langkah:

  • Tutup Android Studio sepenuhnya
  • Hapus .ideapaket dalam proyek Anda
  • Mulai ulang Android Studio
joe
sumber
0

Saya telah mencoba ini tetapi tidak ada yang berhasil untuk saya:

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

Dalam kasus saya, lakukan saja:

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

Bagi saya, saya memperbarui gradle-wrapper.properties menjadi 4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
Gowthaman M
sumber
0

Saya menemukan cara termudah

Identifikasi pustaka yang menyebabkan kesalahan sintaks di Studio.

Sebagai Contoh jika AppCompatActivitymenampilkan kesalahan maka Anda akan melakukan operasi di bawah ini pada Dependensi AppCompat.

  • Hapus ketergantungan yang menunjukkan kesalahan sintaks & Sinkronisasi.
  • Tambahkan lagi & Sinkronkan.

Itu Saja, kesalahan hilang!

Sebelum

Sebelum

Setelah

Setelah

Khemraj
sumber
0

Tidak ada jawaban di atas yang cocok untuk saya.

Setelah banyak mencoba, saya meningkatkan com.android.tools.build:gradle di Project / build.gradle dari 2.3.0 ke 3.0.1, dan berhasil.

Saya kira versi com.android.tools.build:gradle harus sesuai dengan versi AndroidStudio, dan versi AS saya adalah 3.2.1

Hao Qi
sumber
0

Menutup semua file dan menutup Android Studio berfungsi untuk saya.

Sayali Shinde
sumber
-2

Anda perlu memulai ulang Android Studio.

george mano
sumber