paket R mevcut değil


114

Korkunç paketin Rolmadığını anlıyorum, beni öldürüyor. Kodda sorun yok Pazarda kodu çalıştıran uygulamalarım var.

Şimdi basit webviewuygulamaları etkiliyor . o.0

R.string.app_namebenim hatam main.xmlve string.xmliyi. Kafam karıştı.

Eski bir sürümü "borrow"bazı kodlara açtım ve su bastı ve R. errors.temiz yaptım ve R.androiden üste içe aktarma dışında hiçbir şey değişmedi .

Netbeans'e bile yükledim ve aynı şeyi alıyorum. Temiz çalışmıyor. R.javaDosyayı kendim yazabilir miyim ?

Bu Rşey nedir? değil R. karşılık gelmesi gerekiyorduR.java


1
herhangi bir hata için res klasörünü kontrol edin, eğer kitaplık olarak eklenmiş bazı projeleriniz varsa, bunları da kontrol edin
Sunny Kumar Aditya

1
İçe aktarma eklemek için setContentView (R.layout ... satırında Alt + Enter tuşuna basın.
live-love

Yanıtlar:


128

Bununla karşılaşan herkes için ad alanı klasörlerini yeniden adlandırarak yeniden düzenledim. AndroidManifest'i de düzenlemeyi unuttum ve bu yüzden bu hatayı aldım.

Bunu da kontrol ettiğinizden emin olun.


1
Görünüşe göre R'ye yalnızca etkinlik sınıflarımdan erişebiliyorum. Diğer sınıf dosyalarından erişmeye çalışırken bu hatayı alıyordum.
Joe Lapp

85

Bunu basitleştirmek için:

import your.app.package.R;

Tabii ki, your.app.packageuygulama paketinizle değiştirin .

R, kaynak başvuruları kullanmak Bütün sınıflarda, kaldırma başka importolan .R, örneğin,import android.R;


3
Cordova'yı kullanırken, bu doğru çözümdür. Cordova 3.0.9 ile test edildi
Peter

1
Aslında benim hatam. Bu, Cordova projesinin düzgün bir şekilde OLUŞTURULMASINI sağlar, ancak Açılış ekranı hala GÖRÜNMEZ ... Yani bu çözüm aslında eldeki sorunu çözmez.
Peter

Eclipse test projesini Android Studio modülüne dönüştürürken yapmam gereken şey buydu.
RightHandedMonkey

Phonegap kullanıyorsanız ve yukarıdaki içe aktarma ifadesini eklentiler dosyanıza eklerseniz, platformu kaldırıp tekrar eklediğinizden emin olun. Bunun gibi phonegap platform remove androidvephonegap platform add android
Fawaz

54

TL; DR , "paket R yok" hatasını alırsanız olası nedenler

  • XML kaynak dosyalarında bazı hatalar
    -> XML hatalarını düzelt
  • mevcut paket paketten farklıdır R( package AndroidManifest.xml'deki özniteliğe bakın )
    -> import Rsınıfı, örn. import com.example.android.R;
    -> veya kaynağınızda uygun paketi kullanın, örn. package com.example.android;
    -> veya AndroidManifest.xml'deki paket özelliğini, <manifest xmlns:android="..." package="com.example.android" ...>uygunsa olarak değiştirin
  • kullanılan Rkimlikler sistem kaynaklarındandır
    -> içe aktarmayın, ancak sorun teşkil eden kimlikleri önek olarak ekleyin; örneğin, android.Rkimliklerin önekini koymak yerine içe aktarabilirsiniz , ancak daha sonra uygulama sınıfını artık içe aktaramazsınız ve uygulama kimliklerinin önüne eklemeniz gerekir, ör. .android.android.R.layout.simple_list_item_2
    android.RRcom.example.android.R.id.main_menu

R Sınıf uygulamanın kaynaklardan otomatik olarak oluşturulur. Bu idkaynakların 'lerini içerir <manifest> ve ilgili AndroidManifest.xmldosyadaki etikette adı verilen pakette bulunur .

Kaynak XML dosyalarında hata yoksa, R.javakaynak aşağıdaki paket alt dizininde oluşturulacak gen/ve derlenecektir.


Pakette Rbulunan başka bir sınıf var android. Bu android.Rsınıf, sırayla sistem kaynakları idiçin s ve diğer değerleri içeren bazı iç içe geçmiş sınıfları içerir .


Java'da bir sınıfı kullanmak için, sınıfı tüm paketle adlandırmanız gerekir, örn.

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

veya sınıfı içe aktarın ve ardından paket olmadan kullanın

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

Hem geçerli sınıf hem de kullanılan sınıf aynı paketteyse, paketi adlandırmadan da bir sınıfı kullanabilirsiniz, örn.

package com.example.android;
public class A {
    /* ... */
}
package com.example.android;
public class B {
    public void useA() {
        A a = new A();
    }
}

1
Benim durumumda sorun sınıf yolu 'com.android.tools.build:gradle:3.3.0' idi. Bunu classpath 'com.android.tools.build:gradle:3.2.1' olarak değiştirdim ve problem çözüldü.
Mohit Rajput

25

Asla, asla R sınıfını kendiniz yazmaya çalışmayın!

Dosyalarınıza doğru R sınıfını mı aktardınız?

import android.R;

onun yerine

import com.example.R;

birçok insan için sorun gibi görünüyor. Temizledikten ve inşa ettikten sonra derslerim bazen yanlış olanı içe aktarıyor.


3
Ama programı ilk kodlayıp uygun hale getirdiğimde R şeyinin orada olmadığını anlayamıyorum.
Taz Ryder

12

Android stüdyosunda geliştirme yapıyorsanız ve paket adını yeniden düzenlediyseniz, paket adını android manifest ve uygulama gradle dosyasında değiştirmelisiniz.

 applicationId "change here your package name"

ve manifest dosyasında

 package="change here your package name"

Evet. Örneğin, uygulama adında biraz farklı büyük harf kullanımı.
Steve White

9

R.java, otomatik olarak oluşturulmuş bir dosyadır, xml dosyasında hatalar varsa genellikle derlenmez.

Hayır Kendi R.java dosyanızı yazamazsınız, kaynak derleyici tarafından oluşturulması gerekir.

Tüm xml dosyalarınızdaki hataları kontrol edin.


1
Ne tür hatalar ve yeni başlayan biri bunları nasıl tespit etmelidir?
user1725145

6

R sınıfı , XML dosyalarınızdan otomatik olarak oluşturulan Java kodudur (UI düzeni, uluslararasılaştırma dizeleri, vb.) Kod önceden çalışıyorsa (göründüğü gibi), IDE'nize bu dosyaları bir şekilde yeniden oluşturmasını söylemeniz gerekir. :

  • IntelliJ'de Araçlar> Android> <proje> için kaynak oluştur'u seçin
  • (Başka bir IDE'de yolu biliyorsanız, bu yanıtı düzenlemekten çekinmeyin!)

Bu aradığım anlardı. Teşekkürler .. +1
Adhikari Bishwash

5

Sanırım eskiden işe yarıyordu ama şimdi işe yaramıyor ..

MANIFEST dosyanızın içindeki PAKET adını değiştirirseniz bu olabilir.

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

Paket adını değiştirmek istiyorsanız

  1. Paket adını manifest dosyasında manuel olarak değiştirin.
  2. R.java sınıfınıza tıklayın ve F6 tuşuna basın. Sınıfı başka bir pakete taşımanıza izin verecek ve bu sınıfa yapılan tüm başvurular güncellenecektir.

Sen bir tanrısın! Ben den projemi değişiyordu com.example.rickydam.txtbooksiçin com.txtbooks.txtbooksyeni bir proje yaparak ve ben yeni bir proje üzerinde her şeyi taşındı ama R. I bulamadık SDK-araçları, gradle ile senkronize, önbelleklerini geçersiz projeyi temizlik, projeyi yeniden, yeniden çalıştı ... hiçbir şey çalışmıyordu! Ama çözümünüz sorunumu çözdü! Tekrar teşekkürler! Kodlamaya devam edin!
Ricky Dam

4

Bir Android uygulaması oluşturmak için Bazel'i kullanırken bu hatayla karşılaştım:

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.

Senin emin olun android_library/ android_binarybir kullanıyor AndroidManifest.xmldoğru ile package=öznitelik, ve kullandığınız takdirde custom_packageilgili niteliğini android_libraryveya android_binarydoğru yazıldığından emin olun.


3

İthal android.R'yi silin; tüm dosyalardan .. projeyi temizledikten ve projeyi inşa ettikten sonra ....


3

Örnek: Benim paketim com.example.mypc.f01 , Aktiviteye aşağıdaki satırı eklediğiniz hatayı düzeltmek için:

import com.example.mypc.f01.R;


3

Bu hatayı gidermek için kullanabileceğiniz bazı teknikler aşağıdadır: -

  1. Projenizi temizleyin, Buidl-> projeyi temizleyin
  2. Rebuild project, Build -> Rebuild Project
  3. Bildirimi açın ve eksik kaynak olup olmadığını kontrol edin
  4. Check-in düzeni eksikse belirli bir kimliğe ekleyin
  5. Yukarıdaki adımlar işe yaramadıysa, önbelleği geçersiz kılarak android stüdyosunu yeniden başlatın.

2

Benim durumumda, projede birden çok paket oluşturduğumu fark ettim. Android Manifest içinde, sağlayıcı adının yanlış bir şekilde .provider.MyContentProvider yerine MyContentProvider değerini taşıdığını buldum. Ana paketim (kullanıcı arayüzüyle birlikte) co.companyname.database yerine co.companyname.database.provider idi.

Daha sonra, etkilenen sınıfın içe aktarma ifadelerine sağ tıkladım ve Android Studio'dan (0.8.6) içe aktarma ifadelerimi optimize etmesini istedim. Ayrıca IDE'nin sağ üst köşesindeki AS arama çubuğunda .R ararsanız, paketinizin bir parçası olan otomatik olarak oluşturulmuş bir R.java dosyası bulabileceğinizi de not ettim. Bu noktada hiçbir şeyi değiştirmenize gerek yok. Android Manifest dosyasını düzelttikten ve yeniden oluşturduktan sonra Studio projeyi düzeltmelidir.

Diğer bir öğe, bir sınıfta bir dizeyi değerlendirmek için toString (). Sorunu çözmek için yaptığım başka bir şey düşünemiyorum.

Umarım bu birine yardımcı olur.

NB - Bunların tümü AS 0.8.6 ile birlikte

PS

R.java otomatik olarak oluşturulur, bu nedenle başlığı okuyun: / * AUTO-GENERATED FILE. DEĞİŞİKLİK YAPMAYIN. * * Bu sınıf, bulduğu kaynak verilerinden * aapt aracı tarafından otomatik olarak oluşturulmuştur. * Elle değiştirilmemelidir. * /


2

Bunu yaşadığımda yeni bir proje oluşturdum ve dosyaları eski projemden yenisine kopyaladım.

  1. Yeni bir proje başlatın
  2. Eski proje dosyalarımı yapıştırmak için eski dosyaları yeni projeye ekleyin (Düzen, çekilebilirler, com.packagename, ... kopyalayıp sağ tıklayın)

Ancak, ben hala aynı problem vardı: R does not exist. Sonra, Manifest'i not defterimden kopyalayıp Android Studio bildirimlerine yapıştırdığımı ve manifest dosyasındaki paket adını değiştirmediğimi fark ettim.

Bu nedenle, bildirimdeki paket adını yeni proje adıyla değiştirdiğimde, oluşturduğum yeni proje iyi çalıştı.


1

R hatasını alan dosyalara hangi dosyaları aktarıyorsunuz?

R dosyası hakkındaki anlayışım, bunların Android uygulamasındaki tüm özniteliklere otomatik olarak referans listeleri oluşturduğudur. Bu nedenle, bunu kendiniz değiştiremezsiniz.

Bu projeyi oluşturmak için Eclipse kullanıyor musunuz? Eclipse'i güncellemeden önce bu hataları alan eski projeler mi yapıldı? Hata alan referanslar nelerdir?

Başka bir uygulamadaki kopyalanan koddan başka bir R dosyasını içe aktarmadığınızdan emin olun.


Projedeki AndroidManifest.xml dosyası ve project.properties dosyası, android'in aynı hedef / minimum sürümünü görüntülemediğinde R sorunları yaşadım.
Music Monkey

1

Her bilgisayar değiştirdiğimde ve USB ile aktarılan dosyalardan eski projeleri içe aktarmaya çalıştığımda bu problemle karşılaşıyorum.

Çözümüm, yeni bir proje oluşturmak ve dosyaları IDE'ye (şu anda Netbeans kullanıyor) kopyalayıp (sürükleyerek) yeniden oluşturmaktır. Bu bir can sıkıcı ve biraz karmaşık bir çözümdür, ancak sorunu çözer.

Bu başınıza gelirse, en kötü durum, dosyalarınızı yedeklemeniz, projeyi silmeniz ve dosyaları oraya sürükleyip yeniden derlemeniz gerekebilir. Umarım o noktaya gelmez ama bu senin nükleer seçeneğin olur.


1

Deneyebilirsin

Android Studio üst menüsü> Dosya> Önbellekleri geçersiz kıl / yeniden başlat ...

Projenizi yeniden başlatmak için önbelleği geçersiz kıl / yeniden başlat düğmesine tıklayın

Parça sınıfı R sınıfının bazıları düzgün bir şekilde çözülmediyse, R.xxxx.xxx'i yeniden çözün

sonra projenizi yeniden inşa edin

Umarım yardımcı olur


0

Android Studio'da bu hatayla karşılaşırsanız:

Gradle modül dosyaları -> defaultConfig -> applicationId ayarını kontrol edin.

AndroidManifest.xml -> manifest paket etiketini kontrol edin.

Tüm src java dosyalarındaki paket bildirimlerini kontrol edin.

Gradle ile Senkronize Edin, Temizleyin ve Yeniden Oluşturun.

ASLA kendi R dosyanızı oluşturmayın. R, kaynak java dosyalarınızdan ve derleme ayarlarınızdan otomatik olarak oluşturulur.


0

Elimde: "hata: paket R yok" ve javac'ın R.java'ya erişimi olmadığını varsaydım.
Bu yüzden kaynak yoluna% PROJ_LOC% \ gen ekledim ve işe yaradı! KaynakYolu =% PROJ_LOC% \ src,% PROJ_LOC% \ gen

Android Studio veya Ant (veya XML) kullanmıyorum.


0

Birleştirme çakışmalarını çözdükten sonra bu hata ortaya çıkarsa, basit Build -> Clean projesi yardımcı olabilir.


0

Sadece projemdeki hatadan kurtuldum. Örnek bir proje ithal etmiştim, paket klasörlerini değiştirmiştim ancak java dosyalarından birindeki paketi güncellememiştim.

Bu hatanın büyük olasılıkla nedeni 'paket R yok', Java veya bildirim dosyasındaki paket adının yanlış olmasıdır. Doğru ve senkronize olduğundan emin olun ve ardından temiz bir yapı yapın.


0

Bazen projeyi Android Studio'ya yeniden aktardığınızda sorun çözülür.


0

Yanlış yol: Yansıt, imgelere işaretçileri "nakde çevirir" ve eğer yolda isim değişiklikleri yaptıysanız, örneğin Yeniden düzenlenmiş paket veya klasörler. Sonra sadece R harfini tekrar yazın ve editör doğru yolu önerir ve işe yarayacaktır. Bu durumda dosya adlarınız doğrudur ve R. işaretçisinde belirtilen içerik mevcuttur ancak yol yanlıştır, bu nedenle clean ve build çalışmayacaktır.


0

R. kırılmasının bir başka durumu da Ek Açıklama İşleme'dir .

Bazı işlemler, belirli klasörlerde veya klasör seviyelerinde bulunan sınıflara başvurabilir. Gerekli sınıfları başka bir yere taşırsanız, bilinmeyen bir sınıf olarak R. alabilirsiniz .

Ne yazık ki, bu sorunun hata işaretçisi Android Studio'da belirgin değildir.


0

Her yapıda değiştirildiği için R.java'yı kendiniz yazmanın faydası yok,

Örneğin R.something kullanmayı unutmayın : AndroidManifest.xml içindeki paket değerine benzer paket değerine sahip sınıfların içinden R.raw . Dosya adı

R. kaynak kimlikleri mevcut uygulama veya kitaplık için tanımlandığından ve hepsi derleme zamanında mevcutsa kontrol edildiğinden, mevcut uygulama veya kitaplığı hedeflemeyen "kod" dan erişilmesine izin vermek mantıklı değildir ve başka yerlerde kullanılabilir.


0

Java sınıfımın üstüne "paketimin" "adını" eklemeyi unuttum. Sizinki gerçekten eklenip eklenmediğini kontrol edin.


0

Aşağıda benim için çalışıldı.

  1. In AndroidManifest.xml dosyası, paket adının doğru yazıldığından kontrol edin.
  2. ithal com.example.appName.R; (_name.R paketini içe aktarın)

İlk adım işe yaramazsa, ikincisini deneyin.


-2

Sorunumu çözüyorum:

paket R mevcut değil

.

Goto AndroidManifest.xmldosya değişti ve minSDKVersion="17"19'dan


Naçizane size katılmıyorum. AndroidManifest.xml dosyasında mevcut standartlara göre minSDKVersion olmamalıdır. Elinizde varsa, AndroidManifest.xml dosyasından kaldırın, fazladan koddur. MinSDKVersion ve targetSdkVersion yalnızca build.gradle dosyasında tanımlanmalıdır.
Ajay B
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.