paket R tidak ada

114

Saya mendapatkan paket yang ditakuti Rtidak ada, itu membunuh saya. Kode baik-baik saja Saya memiliki aplikasi di pasar yang menjalankan kode tersebut.

Sekarang ini mempengaruhi webviewaplikasi sederhana . o.0

R.string.app_nameadalah kesalahan saya main.xmldan string.xmlbaik-baik saja. Saya sangat bingung.

Saya membuka kembali versi yang lebih lama ke "borrow"beberapa kode dan dibanjiri R. errors.Saya melakukan pembersihan dan tidak ada yang berubah kecuali untuk impor R.androidyang ditambahkan di bagian atas.

Saya bahkan memuat ke Netbeans dan saya mendapatkan hal yang sama. Bersih tidak berfungsi. Bisakah saya menulis R.javafile sendiri?

Benda apa ini R? tidak R. seharusnya sesuai denganR.java

Taz Ryder
sumber
1
periksa folder res apakah ada kesalahan, jika Anda memiliki beberapa proyek yang ditambahkan sebagai perpustakaan, periksa juga
Sunny Kumar Aditya
1
Tekan Alt + Enter pada baris setContentView (R.layout ... untuk menambahkan impor.
live-love

Jawaban:

127

Bagi siapa saja yang mengalami ini, saya refactored dengan mengganti nama folder namespace. Saya baru saja lupa juga mengedit AndroidManifest dan itulah mengapa saya mendapat kesalahan ini.

Pastikan Anda memeriksanya juga.

Mathijs Segers
sumber
1
Sepertinya saya hanya dapat mengakses R dari dalam kelas aktivitas saya. Saya mendapatkan kesalahan ini saat mencoba mengaksesnya dari file kelas lain.
Joe Lapp
84

Sederhananya:

import your.app.package.R;

Tentu saja, menggantinya your.app.packagedengan paket aplikasi Anda.

Di semua kelas yang menggunakan referensi sumber daya R, hapus yang lain importdengan .R, yaituimport android.R;

ocodo
sumber
3
Saat menggunakan Cordova, ini adalah solusi yang tepat. Diuji dengan Cordova 3.0.9
Peter
1
Sebenarnya, kesalahanku. Ini memungkinkan proyek Cordova untuk MEMBANGUN dengan benar, namun layar Pembuka masih TIDAK muncul ... Jadi, solusi ini tidak benar-benar menyelesaikan masalah yang dihadapi.
Peter
Inilah yang perlu saya lakukan saat mengonversi proyek uji Eclipse ke modul Android Studio.
RightHandedMonkey
Jika Anda menggunakan phonegap dan menambahkan pernyataan import di atas ke dalam file plugin Anda, maka pastikan untuk menghapus platform dan menambahkan lagi. Seperti ini phonegap platform remove androiddanphonegap platform add android
Fawaz
54

TL; DR , jika Anda mendapatkan error "paket R tidak ada", kemungkinan penyebabnya adalah

  • beberapa kesalahan dalam file sumber daya XML
    -> perbaiki kesalahan XML
  • paket saat ini berbeda dari Rpaket (lihat package atribut di AndroidManifest.xml)
    -> Rkelas impor , misalnya import com.example.android.R;
    -> atau gunakan paket yang sesuai di sumber Anda, misalnya package com.example.android;
    -> atau ubah atribut paket di AndroidManifest.xml ke <manifest xmlns:android="..." package="com.example.android" ...>, jika sesuai
  • Rid yang digunakan berasal dari sumber daya sistem
    -> jangan impor android.R, tetapi awali id ​​yang melanggar dengan android., misalnya android.R.layout.simple_list_item_2
    Anda dapat mengimpor android.Ralih-alih memberi awalan id tentunya, tetapi kemudian Anda tidak dapat mengimpor Rkelas aplikasi lagi dan harus memberi awalan id aplikasi, mis. com.example.android.R.id.main_menu.

The R kelas dihasilkan secara otomatis dari sumber aplikasi. Ini berisi ids untuk sumber daya ini dan terdapat dalam paket yang diberi nama dalam <manifest> tag di AndroidManifest.xmlfile yang sesuai .

Jika tidak ada kesalahan dalam file XML sumber daya, R.javasumber akan dibuat dalam subdirektori paket di bawah ini gen/dan dikompilasi.


Ada Rkelas lain yang terletak di dalam androidpaket. android.RKelas ini berisi beberapa kelas bersarang, yang pada gilirannya berisi ids dan nilai lain untuk sumber daya sistem .


Untuk menggunakan kelas di Java, Anda harus memberi nama kelas dengan seluruh paket, misalnya

java.util.List<Object> list = new java.util.ArrayList<Object>();

atau impor kelas dan kemudian gunakan tanpa paket

import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();

Anda juga dapat menggunakan kelas tanpa menamai paket, jika kelas saat ini dan kelas yang digunakan berada dalam paket yang sama, mis.

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}
Olaf Dietsche
sumber
1
Dalam kasus saya, masalahnya adalah classpath 'com.android.tools.build:gradle:3.3.0'. Saya mengubahnya menjadi classpath 'com.android.tools.build:gradle:3.2.1' dan masalah terpecahkan.
Mohit Rajput
25

Jangan pernah mencoba menulis kelas R sendiri!

Sudahkah Anda mengimpor kelas R yang tepat di file Anda?

Perbuatan

import android.R;

dari pada

import com.example.R;

tampaknya menjadi masalah bagi banyak orang. Setelah membersihkan dan membangun, terkadang kelas saya mengimpor yang salah.

J. Maes
sumber
3
Tetapi saya tidak mengerti bahwa benda R tidak ada ketika saya pertama kali membuat kode dan mematuhi program.
Taz Ryder
12

jika Anda mengembangkan aplikasi di android studio dan memfaktorkan ulang nama paket, Anda harus mengubah nama paket di manifes android dan file gradle aplikasi.

 applicationId "change here your package name"

dan dalam file manifes

 package="change here your package name"
Milon
sumber
Ya. Kapitalisasi nama aplikasi yang sedikit berbeda, misalnya.
Steve White
9

R.java adalah file yang dibuat secara otomatis, biasanya tidak dapat dikompilasi jika Anda memiliki kesalahan dalam file xml.

Tidak Anda tidak dapat menulis file R.java Anda sendiri, itu harus dibuat oleh kompilator sumber daya.

Periksa kesalahan di semua file xml Anda.

nandeesh
sumber
1
Jenis kesalahan apa dan bagaimana seharusnya seorang pemula menemukannya?
pengguna1725145
6

Kelas R adalah kode Java yang dibuat secara otomatis dari file XML Anda (tata letak UI, string internasionalisasi, dll.) Jika kode dulu berfungsi sebelumnya (seperti yang terlihat), Anda perlu memberi tahu IDE Anda untuk membuat ulang file ini entah bagaimana caranya :

  • di IntelliJ, pilih Tools> Android> Generate sources untuk <project>
  • (Jika Anda tahu caranya di IDE lain, silakan edit jawaban ini!)
DomQ
sumber
Ini adalah jawaban yang saya cari. Terima kasih .. +1
Adhikari Bishwash
5

Saya kira dulu berfungsi tetapi sekarang tidak ..

Ini dapat terjadi jika Anda mengubah nama PAKET di dalam file MANIFEST Anda

<manifest
   package="com.example.android...."

Jika Anda ingin mengubah nama paket

  1. Ubah nama paket secara manual di file manifes.
  2. Klik kelas R.java Anda dan tekan F6. Ini akan memungkinkan Anda untuk memindahkan kelas ke paket lain, dan semua referensi ke kelas itu akan diperbarui.
Emanuele Greco
sumber
Anda adalah dewa! Saya mengubah proyek saya dari com.example.rickydam.txtbooksmenjadi com.txtbooks.txtbooksdengan membuat proyek baru dan saya memindahkan semuanya ke proyek baru tetapi tidak dapat menemukan R. Saya mencoba membuat cache tidak valid, menyinkronkan dengan gradle, membersihkan proyek, membangun kembali proyek, menginstal ulang SDK-tools ... Tidak ada yang berhasil! Tetapi solusi Anda memperbaiki masalah saya! Terima kasih lagi! Terus koding!
Ricky Dam
4

Saya baru saja mengalami kesalahan ini saat menggunakan Bazel untuk membangun aplikasi Android:

error: package R does not exist
                + mContext.getString(R.string.common_string),
                                      ^
Target //libraries/common:common_paidRelease failed to build
Use --verbose_failures to see the command lines of failed build steps.

Pastikan android_library/ Anda android_binarymenggunakan AndroidManifest.xmldengan package=atribut yang benar , dan jika Anda menggunakan custom_packageatribut pada android_libraryatau android_binary, pastikan dieja dengan benar.

Jin
sumber
3

Hapus impor android.R; dari semua file .. setelah membersihkan proyek dan membangun proyek .... Ini akan menghasilkan

satish
sumber
3

Contoh: Paket saya adalah com.example.mypc.f01 , untuk memperbaiki kesalahan Anda menambahkan baris di bawah ini ke Aktivitas:

import com.example.mypc.f01.R;

O Thạnh Ldt
sumber
3

Di bawah ini adalah beberapa teknik yang dapat Anda gunakan untuk menghilangkan kesalahan ini: -

  1. Bersihkan proyek Anda, Buidl-> Proyek bersih
  2. Rebuild project, Build -> Rebuild Project
  3. Buka manifes dan periksa apakah ada sumber daya yang hilang
  4. Tata letak check-in ke id tertentu jika tidak ada, tambahkan
  5. Jika langkah-langkah di atas tidak berhasil, mulai ulang android studio dengan membuat cache tidak valid
Budhdi Sharma
sumber
2

Dalam kasus saya, saya menyadari bahwa saya membuat beberapa paket dalam proyek tersebut. Dalam Manifes Android saya menemukan bahwa nama penyedia salah memegang nilai MyContentProvider, bukan .provider.MyContentProvider. Paket utama saya (dengan UI) adalah co.companyname.database.provider, bukan co.companyname.database.

Kemudian pada pernyataan impor untuk kelas yang terpengaruh, saya cukup mengklik kanan dan meminta Android Studio (0.8.6) untuk mengoptimalkan pernyataan impor saya. Saya juga mencatat bahwa jika Anda mencari .R di bilah pencarian AS di sudut kanan atas IDE, Anda dapat menemukan file R.java yang dibuat secara otomatis yang merupakan bagian dari paket Anda. Saat ini Anda tidak perlu mengubah apa pun. Studio harus memperbaiki proyek setelah Anda memperbaiki file Manifes Android dan membangunnya kembali.

Satu item lainnya adalah bahwa dalam satu kelas saya melakukan penggunaan toString (). Length () untuk mengevaluasi string tetapi menukar mereka untuk TextUtils.IsEmpty (stringVal); Tidak dapat memikirkan hal lain yang saya lakukan untuk menyelesaikan masalah ini.

Semoga ini bisa membantu seseorang.

NB - Semua ini dengan AS 0.8.6

PS

R.java dibuat secara otomatis jadi baca tajuknya: / * FILE yang DIHasilkan Otomatis. JANGAN MODIFIKASI. * * Kelas ini secara otomatis dibuat oleh alat * aapt dari data sumber daya yang ditemukannya. Ini * tidak boleh dimodifikasi dengan tangan. * /

Tommie C.
sumber
2

Ketika saya mengalami ini, saya membuat proyek baru, dan menyalin file dari proyek lama saya ke yang baru.

  1. Mulailah sebuah proyek baru
  2. Tambahkan file lama ke dalam proyek baru (salin dan klik kanan pada Layout, drawables, com.packagename, ...) untuk menempelkan file proyek lama saya

Namun, saya masih memiliki masalah yang sama: R does not exist . Kemudian saya menyadari bahwa saya telah menyalin dan menempelkan Manifest dari notepad saya ke manifes Android Studio dan saya belum mengubah nama paket di file manifes.

Oleh karena itu, setelah saya mengubah nama paket di manifes menjadi nama proyek baru, proyek baru yang saya buat berfungsi dengan baik.

Jesús Rojo
sumber
1

File apa yang Anda impor ke dalam file yang mendapatkan error R?

Pemahaman saya tentang file R adalah bahwa mereka secara otomatis menghasilkan daftar referensi untuk semua atribut dalam aplikasi Android. Oleh karena itu, Anda tidak dapat mengubahnya sendiri.

Apakah Anda menggunakan Eclipse untuk membangun proyek ini? Apakah proyek lama mendapatkan kesalahan ini sebelum memperbarui Eclipse? Apa referensi yang mendapatkan kesalahan?

Periksa untuk memastikan bahwa Anda tidak mengimpor file R lain dari kode lain yang disalin di aplikasi lain.

Musik Monyet
sumber
Saya mengalami masalah R ketika file AndroidManifest.xml dan file project.properties dalam proyek tidak menampilkan versi target / minimum yang sama dari android.
Music Monkey
1

Saya mengalami masalah ini setiap kali saya berpindah komputer dan mencoba mengimpor proyek lama dari file yang ditransfer melalui USB.

Solusi saya adalah membuat proyek baru dan menyalin (menyeret) file ke dalam IDE (saat ini menggunakan Netbeans) dan membangun kembali. Ini adalah gangguan dan sedikit solusi yang meretas, tetapi ini memperbaiki masalah.

Jika ini terjadi pada Anda, kasus terburuknya adalah Anda mungkin harus membuat cadangan file Anda, menghapus proyek, dan hanya menyeret file ke sana dan mengkompilasi ulang. Mudah-mudahan tidak sampai seperti itu, tetapi itu akan menjadi opsi nuklir Anda.

pengguna5101322
sumber
1

Anda boleh mencoba

Menu atas Android Studio> File> Cache tidak valid / restart ...

Klik tombol cache / restart yang tidak valid untuk memulai kembali proyek Anda

Selesaikan R.xxxx.xxx lagi jika beberapa kelas fragmen kelas R tidak diselesaikan dengan benar

kemudian bangun kembali proyek Anda

Semoga membantu

Ethan Liew
sumber
0

Jika Anda mengalami kesalahan ini di Android Studio:

Periksa file modul Gradle -> defaultConfig -> setelan applicationId.

Periksa AndroidManifest.xml -> tag paket manifes.

Periksa deklarasi paket di semua file java src.

Sinkronkan, Bersihkan, lalu Bangun Ulang dengan Gradle.

JANGAN PERNAH membangun file R Anda sendiri. R dibuat secara otomatis dari file java sumber dan setelan build Anda.

rask004
sumber
0

Saya mendapat: "error: paket R tidak ada" dan menganggap javac tidak memiliki akses ke R.java.
Jadi saya menambahkan% PROJ_LOC% \ gen ke sourcepath, dan berhasil! SOURCEPATH =% PROJ_LOC% \ src;% PROJ_LOC% \ gen

Saya tidak menggunakan Android Studio atau Ant (atau XML).

mengobrol
sumber
0

Jika kesalahan ini muncul setelah menyelesaikan konflik penggabungan, proyek Build -> Clean sederhana dapat membantu.

Dmitry Smolyaninov
sumber
0

Singkirkan saja kesalahan dalam proyek saya. Saya telah mengimpor proyek sampel, saya telah mengubah folder paket tetapi saya belum memperbarui paket di salah satu file java.

Kemungkinan besar penyebab kesalahan ini 'paket R tidak ada' adalah nama paket di Java atau file manifes salah. Pastikan itu benar dan sinkron dan kemudian lakukan build yang bersih.

Ajay B
sumber
0

Terkadang, masalah terselesaikan saat Anda baru saja mengimpor ulang proyek ke Android Studio.

Aung Pyae
sumber
0

Jalur yang salah: Proyek "menguangkan" petunjuk ke gambar dan jika Anda telah membuat perubahan nama ke jalur, misalnya paket atau folder Refactored. Kemudian cukup tulis huruf R lagi dan editor menyarankan jalan yang benar dan itu akan berhasil. Dalam hal ini nama file Anda benar dan konten yang dirujuk di R. pointer ada tetapi jalurnya salah, sehingga clean and build tidak akan berfungsi.

Patrik Rikama-Hinnenberg
sumber
0

Kasus lain R. kerusakan adalah Pemrosesan Anotasi .

Beberapa pemrosesan dapat merujuk ke kelas yang terletak di folder atau tingkat folder tertentu. Jika Anda memindahkan kelas yang diperlukan ke lokasi lain, Anda bisa mendapatkan R. sebagai kelas yang tidak diketahui.

Sayangnya penunjuk kesalahan untuk masalah ini tidak terbukti di Android Studio.

Zon
sumber
0

Tidak ada manfaat menulis R.java sendiri karena diubah di setiap bangunan,

Ingatlah untuk menggunakan R.something misalnya: R.raw.filename dari dalam kelas yang memiliki nilai paket yang mirip dengan nilai paket di dalam AndroidManifest.xml

karena R. resource ID ditentukan untuk aplikasi atau pustaka saat ini dan semuanya diperiksa jika ada pada waktu kompilasi, jadi tidak masuk akal untuk mengizinkannya diakses dari "kode" yang tidak menargetkan aplikasi atau pustaka saat ini dan dapat digunakan di tempat lain.

Mustafa R. Mahdi
sumber
0

Saya lupa menambahkan "nama" dari "paket" saya di bagian atas kelas java saya. Periksa apakah milik Anda benar-benar ditambahkan.

YESUS KRISTUS ADALAH SATU-SATUNYA CARA T
sumber
-2

Saya memecahkan masalah saya:

paket R tidak ada

.

Goto AndroidManifest.xmlfile dan ubah minSDKVersion="17"dari 19

Fazal
sumber
Saya mohon untuk berbeda. Anda tidak boleh memiliki minSDKVersion di file AndroidManifest.xml sesuai standar saat ini. Jika Anda memilikinya, hapus dari file AndroidManifest.xml itu adalah kode yang berlebihan. MinSDKVersion & targetSdkVersion harus ditentukan hanya dalam file build.gradle.
Ajay B