Saya baru saja mengunduh dan menginstal Android SDK yang baru. Saya ingin membuat aplikasi sederhana untuk menguji drive itu.
Wizard membuat kode ini:
package eu.mauriziopz.gps;
import android.app.Activity;
import android.os.Bundle;
public class ggps extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
tapi Eclipse memberiku kesalahan
R tidak bisa diselesaikan
on line
setContentView(R.layout.main);
Mengapa?
PS: Saya punya file XML dengan nama di main.xml
bawah res/layout/
.
android
eclipse
compiler-errors
android-resources
android-sdk-tools
Maurizio Pozzobon
sumber
sumber
Jawaban:
Setelah melacak masalah ini juga, saya menemukan catatan ini di dokumentasi Android:
http://source.android.com/source/using-eclipse.html
Saat mempelajari tutorial contoh Android, saya sering menggunakan perintah Ctrl+ Shift+ Ountuk "Mengatur Impor" dan menghasilkan pernyataan impor yang tidak ada. Terkadang ini akan menghasilkan pernyataan impor yang salah yang akan menyembunyikan
R.java
kelas yang dihasilkan secara otomatis saat Anda membangun.sumber
Setiap kali saya memiliki masalah dengan R yang tidak dihasilkan, atau bahkan menghilang, ini disebabkan beberapa masalah dalam file tata letak XML yang mencegah aplikasi agar tidak dibangun.
sumber
android:icon="@drawable/XXX"
deklarasi di<item>
dalam sumber daya menu, tetapi tidak ada tanda coretan merah bahwa sumber daya yang dapat ditarik XXX tidak ditemukan. Dalam kasus lain,"@drawable/YYY"
itu ditandai ketika YYY tidak ditemukan, tapi tidak dalam kasus ini. Untuk beberapa alasan.Kapanpun Anda dapatkan
kemudian periksa
/res
direktori dan harus ada beberapa file yang memiliki beberapa kesalahan di dalamnya dan itu mencegah aplikasi dari dibangun. Misalnya, mungkin file tata letak atau mungkin karena beberapa sumber daya yang hilang, tetapi Anda sudah mendefinisikannya dalam file XML.Jika Anda memiliki gambar tambahan, bahkan tidak terpakai (!) Atau tidak direferensikan (!) Dalam folder seperti res / drawables-mdpi yang tidak mematuhi konvensi penamaan file (mungkin hanya berisi [a-z0-9_.]), Kelas R.java mungkin tidak menghasilkan, menyebabkan rantai kejadian semua posting lainnya disebut. Semoga ini bisa membantu!
sumber
Lihatlah impor Anda. Kemungkinannya adalah garis:
akan disana. Jika itu masalahnya, hapus, sehingga proyek Anda akan menyelesaikan R bukan dengan kelas Sumber Daya Android default, tetapi dengan yang dihasilkan secara otomatis dari folder / res / Anda.
sumber
Dan satu hal lagi yang dapat menyebabkan masalah ini:
Saya menginstal ADT baru (ayat 22). Itu berhenti membuat
gen
folder yang termasukR.java
. Solusinya adalah juga menginstal Android SDK Build Tools baru dari Android SDK Manager.Solusi ditemukan di sini
sumber
R.java
adalah file yang dibuat oleh plugin Android Eclipse saat membangun aplikasi Anda.R.java
dibuat di bawah direktori "gen". File ini dihasilkan dari informasi di direktori "res". Jika Anda menjalankan pilih "Project" -> "Clean ..." pada menu Eclipse, itu akan menghapus dan kemudian membuat ulangR.java
file.Masalah "R tidak dapat diselesaikan" terjadi ketika Anda mengubah nama paket Anda di
AndroidManifest.xml
file. Ini menggunakan nama paket Android Anda untuk membuat subdirektori di bawah direktori "gen" tempat ia menyimpanR.java
file.Eclipse mungkin memiliki masalah menjalankan pembersihan, karena bingung tentang di mana
R.java
file itu ketika Anda telah mengubah nama paket Android. Anda dapat mengganti nama subdirektori di bawahgen
untuk mencocokkan nama paket baru Anda, atau Anda dapat mengubah nama paket Anda kembali ke nama lama. Lakukan pembersihan lalu ubah nama paket menjadi nama baru yang Anda inginkan. Ini berfungsi baik jika Anda menghentikan Eclipse dari mencoba membangun ketika Anda mengubah nama paket. Di bawah menu "Project" hapus centang opsi untuk "Build Automatically" dan juga ketika dialog "Clean ..." bertanya apakah itu harus "Mulai build segera" hapus centang kotak sehingga tidak mencoba membangun ketika Anda mengubah nama paket. Setelah Anda mengubah nama, Anda dapat menghidupkan kembali "Build Automatically".Perhatikan bahwa jika
AndroidManifest.xml
nama paket file Anda tidak cocok dengan nama paket Java Anda, Eclipse akan secara otomatis menambahkan "impor <nama paket Android Anda> .R;" baris di semua.java
file Anda yang memiliki referensi ke R. Jika Anda mengubahAndroidManifest.xml
nama paket Anda , kadang-kadang Eclipse tidak memperbarui semua impor tambahan ini. Jika itu terjadi, gunakan Eclipse refactoring ( ALT+ Shift+ R) untuk mengubah pernyataan impor di salah satu file Java Anda keAndroidManifest.xml
nama paket baru Anda . Yang terbaik adalah melakukan ini saat Anda menonaktifkan "Bangun Secara Otomatis".sumber
import com.example.main.package.name.R;
Apa yang dikatakan Will benar
tetapi saya telah menemukan bahwa ada masalah lain yang menyebabkan masalah pertama. Alat-alat di direktori SDK tidak memiliki izin untuk dieksekusi, jadi itu seperti tidak ada untuk Eclipse, sehingga tidak membangun
R.java
file.Jadi memodifikasi izin dan memilih "Bangun Otomatis" menyelesaikan masalah.
sumber
cd $ANDROID_SDK_ROOT/build-tools/<version>
. Kemudianchmod a+x
pada file sepertiaapt
,aidl
,dexdump
,dx
, dllANDROID_SDK_ROOT
harus set di lingkungan Anda, dan itu akan mengarah ke instalasi SDK Anda. Sebagai contoh/opt/android-sdk
,. Sangat penting untuk mengatur keduanyaANDROID_SDK_ROOT
danANDROID_NDK_ROOT
karena alat Android menggunakannya secara internal. Lihat Direkomendasikan Direktori NDK? pada daftar pengguna NDK.R adalah kelas yang dibuat secara otomatis yang memegang konstanta yang digunakan untuk mengidentifikasi sumber daya Anda. Jika Anda tidak memiliki file R.java (itu akan menjadi gen / eu.mauriziopz.gps / R.java di Eclipse dengan 1.5 SDK) Saya akan merekomendasikan menutup dan membuka kembali proyek Anda atau pergi ke Project> Build all (dan memilih "Build Automatically" saat ada seperti yang direkomendasikan oleh Josef) Jika itu tidak berhasil daripada mencoba membuat proyek baru, jika masalahnya diciptakan kembali daripada memposting di sini lagi dan kami akan membahas lebih detail.
sumber
Tutup semua file, bersihkan proyek, mulai ulang Eclipse.
sumber
Perlu check-in
AndroidManifest.xml
. Atributpackage
memiliki nilai yang benar.Itu adalah:
Setelah Anda mengubahnya,
R.java
akan dihasilkan kembali.sumber
Kesalahan ini juga bisa disebabkan oleh menambahkan aktivitas ke namespace yang berbeda dengan root namespace untuk paket Anda.
Misalnya, jika
com.example.myapp
adalah namespace root untuk paket Anda, Anda kemudian dapat menambahkan aktivitas kecom.example.myapp.activities
namespace.Ini akan menghasilkan kesalahan "R tidak dapat diselesaikan".
Untuk memperbaiki impor, R di namespace default di aktivitas Anda harus:
sumber
Bersamaan dengan saran hebat di jawaban sebelumnya, pastikan target Android Anda ditetapkan:
Sunting: Setahun kemudian saya menemukan penyebab lain. Saya memiliki gambar .jpg di folder yang dapat digambar dengan nama yang sama dengan gambar .png. Merujuk gambar ini dalam kode saya pasti membingungkan program dan itu memberi kesalahan "R tidak dapat diselesaikan".
sumber
Pastikan Anda menginstal manajer membangun Android bentuk sdk manajer
memproyeksikan properti klik kanan-> Java BuildPath pilih Library dan tambahkan android-support.jar ikuti langkah ini.
Pergi ke Project-> Properties-> Java Build Path daripada pilih Order and export tab. Set android-support .jar library dicentang dan naikkan ke atas daftar. Dan bersihkan dan bangun kembali .. Ini berfungsi untuk sebagian besar kasus
sumber
Saya baru saja mengalami masalah ini untuk yang kesekian kalinya dan menyadari apa yang menyebabkannya: Saya membuat file XML dengan huruf besar dalam namanya. Semua nama file XML Anda
/res
harus cocok[a-z0-9\\._]
.sumber
Solusi paling sederhana - Terkadang Anda hanya perlu menyimpan file XML yang sedang Anda kerjakan untuk mendapatkan autogenerator untuk memulai.
Simpan file tersebut (mis. Main.xml) kemudian hapus file R.java dan lihat apakah R.java yang dibuat ulang menyelesaikan masalah penyelesaian R.
sumber
Periksa nama file XML. Pastikan semuanya dalam huruf kecil.
Juga pastikan bahwa semua nama sumber daya gambar juga semuanya dalam KASUS RENDAH. Saya memiliki huruf kapital atas nama file jpg saya, dan itu menyebabkan kesalahan R yang belum terselesaikan tepat di seluruh proyek saya.
sumber
R
adalah kelas yang dihasilkan. Jika Anda menggunakan Android Development Tools (ADT), itu dihasilkan setiap kali proyek dibangun. Anda mungkin menonaktifkan 'Bangun Otomatis'.sumber
Kesalahan ini terpotong pada instalasi Linux Mint x64 saya. Ternyata hasilnya adalah kegagalan dalam
ADB
biner, karenaia32-libs
paket itu tidak diinstal. Cukup menjalankanapt-get install ia32-libs
dan meluncurkan kembali Eclipse memperbaiki kesalahan.Jika distro x64 Anda tidak memiliki ia32-libs, Anda harus menggunakan Multiarch.
Periksa # 4 dan # 5 pada posting ini: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883
Semoga ini bisa membantu seseorang.
sumber
Anda mungkin perlu memperbarui / menginstal alat SDK. Luncurkan kembali Android SDK Manager lagi dan instal item baru: Android SDK Build-tools.one dengan satu penghapusan, perbaiki yang mana berfungsi untuk Anda.
sumber
Anda mungkin perlu memperbarui alat SDK. Luncurkan kembali Android SDK Manager lagi dan instal item baru: Android SDK Build-tools.
sumber
Saya punya masalah ini juga. Ternyata saya tidak sengaja menghapus sumber daya string "app_name" dari
strings.xml
file, yang menyebabkan kesalahan diam. Setelah saya menambahkannya kembali, kelas R berhasil dibuat dan semuanya kembali dan berjalan.sumber
Cobalah untuk membuat huruf kecil nama tata letak XML baru Anda. Misalnya, gunakan
my_file.xml
sebagai gantimyFile.xml
.sumber
Namun alasan lain
R.java
mungkin tidak mendapatkan autogenerated adalah jika Anda memiliki direktori seperti res / drawable-hdpi , res / drawable -mdpi , atau res / drawable-ldpi .1.6+ tampaknya baik-baik saja dengan direktori ini, tetapi 1,5 tidak menginginkannya. Ketika saya menghapus direktori itu,
R.java
mulai membuat autogenerasi lagi untuk saya.sumber
Pemeriksaan pertama apakah ada kesalahan dalam tata letak xml atau tidak, jika kemudian atasi dulu.
Kalau tidak, hapus ketergantungan junit dari proyek dan bangun kembali proyek.
sumber
Sering kali ini karena nomor versi MinSDK yang Anda berikan saat membuat proyek. Contoh:
Jika Anda ingin 2.1 menjadi minimum, Android 2.1 sebenarnya adalah API Level 7.
Anda dapat melihat apa yang saya bicarakan ketika Anda menelusuri SDK yang Anda unduh dan instal. Arahkan ke tempat Anda menginstal SDK ke (
C:\android-sdk-windows
misalnya) dan buka folder bernama "platform". Anda akan melihat sesuatu seperti "android-7" terdaftar sebagai folder, dan jika Anda membuka bahwa adasource.properties
file yang, ketika dibuka dengan editor teks, akan menampilkan versi platform yang sesuai.Saat Anda membuat proyek, dan Anda harus memilih API "Bangun Target", kolom terakhir dalam daftar yang bernama "Tingkat API" menunjukkan angka yang Anda cari saat mengisi pengaturan MinSDK.
Ini mungkin salah satu kesalahan paling umum yang menyebabkan
R.java
file tidak dibuat di bawah Project> gen> packagename> R.java.sumber
Hapus
main.out.xml
. Saya baru dalam hal ini dan belum tahu untuk apa file ini digunakan, tetapi menghapusnya telah menyelesaikan masalahnya.sumber
Buka saja daftar menu Top Android. klik pada Bangun Menu, di bawah Bangun klik pada Rebuild Project .
sumber
Saya punya contoh Android 8 dan mencoba menggunakan Android 7 SDK. Ketika saya menutup proyek dan membuka kembali folder aplikasi dan memilih untuk menggunakan Android 8 SDK, ia dapat menemukan file R. Semoga ini membantu.
sumber
Dalam kasus saya, saya mengalami kesalahan pada file saya
AndroidManifest.xml
. Yang lain mengatakan bahwa file XML Anda harus bebas dari kesalahan, tetapi saya hanya mencari di folder res /. Temukan dan perbaiki sebanyak mungkin kesalahan dan masalahnya mungkin teratasi dengan sendirinya.sumber
Jika ada yang tertarik (saya mungkin menyelamatkan hidup Anda di sini), saya memiliki kesalahan,
R.xml
tidak dapat diselesaikan, sedikit berbeda pada proyek GLS. Hmmmm. Setelah melihat ke dalamR.java
, saya menemukan kelas yang dibuat secara otomatisXML.java
,, (saya pikir) tidak ada di sana.Larutan? Itu membutuhkan folder baru di
res
:res\xml
dan file yang dipanggildefault_values.xml
di sana. Lalu semuanya baik-baik saja.Kalau-kalau Anda tidak punya file itu, itu:
sumber