パッケージRは存在しません


114

私は恐ろしいパッケージRが存在しないことを取得しています、それは私を殺しています。コードは問題ありません。市場にコードを実行しているアプリがあります。

今では、シンプルなwebviewアプリケーションに影響を与えています。o.0

R.string.app_name私のエラーだmain.xmlstring.xml大丈夫です。私はすごく混乱しています。

古いバージョンを"borrow"いくつかのコードで再度開いたところ、あふれR. errors.出てきました。クリーンアップを実行R.androidし、上部にインポートを追加する以外は何も変更しませんでした。

Netbeansにロードしても、同じ結果が得られます。クリーンが機能していません。R.java自分でファイルを書き込むことはできますか?

これは何Rですか?はありませんR。対応することになっていますR.java


1
エラーがないかresフォルダーを確認します。ライブラリとして追加されたプロジェクトがある場合は、それらもチェックインします
Sunny Kumar Aditya '20

1
。ヒットAltキー+インポートを追加するためにsetContentView(R.layout ...行に入力します
ライブ-愛の

回答:


127

これに遭遇した人のために、名前空間フォルダーの名前を変更してリファクタリングしました。AndroidManifestも編集するのを忘れたので、このエラーが発生しました。

これも確認してください。


1
アクティビティクラス内からのみRにアクセスできるようです。他のクラスファイルからアクセスしようとすると、このエラーが発生しました。
Joe Lapp、2015

84

これを簡単にするために:

import your.app.package.R;

もちろん、your.app.packageアプリパッケージで置き換えます。

Rリソース参照を使用するすべてのクラスでは、削除し、他importとの.R、すなわちimport android.R;


3
Cordovaを使用する場合、これが適切なソリューションです。Cordova 3.0.9でテスト
Peter

1
実際、私の間違い。これにより、Cordovaプロジェクトは適切に構築されますが、スプラッシュ画面はまだ表示されません...したがって、この解決策は実際には当面の問題を解決しません。
ピーター

これは、EclipseテストプロジェクトをAndroid Studioモジュールに変換するときに必要なことです。
RightHandedMonkey 2015

phonegapを使用していて、上記のインポートステートメントをプラグインファイル内に追加する場合は、必ずプラットフォームを削除してから再度追加してください。このようphonegap platform remove androidphonegap platform add android
Fawaz 2017

54

TL; DR、「パッケージRが存在しない」というエラーが発生した場合、考えられる理由は次のとおりです。

  • XMLリソースファイルの
    エラー-> XMLエラーを修正
  • 現在のパッケージはパッケージとは異なりRます(package AndroidManifest.xmlの属性を参照)
    ->インポートRクラス(例:import com.example.android.R;
    ->)、またはソースで適切なパッケージを使用(例:package com.example.android;
    ->)、または適切な場合はAndroidManifest.xml のパッケージ属性をに 変更します<manifest xmlns:android="..." package="com.example.android" ...>
  • 使用されたRIDはシステムリソースからのものです
    ->インポートしませんandroid.Rが、問題のあるID の前にを付け ますandroid.。たとえば、IDをプレフィックスする代わりにandroid.R.layout.simple_list_item_2
    インポートandroid.Rすることはできますが、アプリケーションRクラスをインポートすることはできず、アプリケーションIDの前に付ける必要があります。com.example.android.R.id.main_menu

R クラスは、アプリケーションのリソースから自動的に生成されます。これには、idこれらのリソースのが含まれて<manifest> おり、対応するAndroidManifest.xmlファイルのタグで指定されたパッケージに含まれてい ます。

リソースXMLファイルにエラーがない場合、R.javaソースは以下のパッケージサブディレクトリに生成され、gen/コンパイルされます。


パッケージR内に別のクラスがありandroidます。このandroid.Rクラスにはいくつかのネストされたクラスが含まれておりidシステムリソースのsおよびその他の値が含まれています。


Javaでクラスを使用するには、パッケージ全体でクラスに名前を付ける必要があります。例:

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

またはクラスをインポートして、パッケージなしで使用する

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

現在のクラスと使用されているクラスの両方が同じパッケージにある場合は、パッケージに名前を付けずにクラスを使用することもできます。たとえば、

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

1
私の場合、問題はクラスパス 'com.android.tools.build:gradle:3.3.0'でした。クラスパス 'com.android.tools.build:gradle:3.2.1'に変更して問題を解決しました。
Mohit Rajput

25

決して自分でRクラスを書こうとしないでください!

ファイルに正しいRクラスをインポートしましたか?

している

import android.R;

の代わりに

import com.example.R;

多くの人にとって問題のようです。クリーンアップしてビルドした後、クラスが間違ったクラスをインポートすることがあります。


3
しかし、最初にコードを記述してプログラムをコンパイルしたときに、Rのものがなかったとは思いません。
Taz Ryder

12

Android Studioで開発していてパッケージ名をリファクタリングしている場合は、AndroidマニフェストとアプリのGradleファイルでパッケージ名を変更する必要があります。

 applicationId "change here your package name"

そしてマニフェストファイル

 package="change here your package name"

うん。たとえば、アプリ名の大文字の使い方が少し異なります。
スティーブホワイト

9

R.javaは自動生成されたファイルです。通常、xmlファイルにエラーがある場合はコンパイルされません。

いいえ独自のR.javaファイルを作成することはできません。リソースコンパイラによって生成される必要があります。

すべてのxmlファイルにエラーがないか確認してください。


1
どのようなエラーがあり、初心者はどのようにそれらを見つける必要がありますか?
user1725145 2014

6

Rクラスは、XMLファイル(UIレイアウト、国際化文字列など)から自動生成されたJavaコードです。コードが以前は機能していた場合(それがそうであるように)、これらのファイルを何らかの方法で再生成するようIDEに指示する必要があります。 :

  • IntelliJで、[ツール]> [Android]> [<プロジェクト>のソースを生成]を選択します
  • (別のIDEで方法を知っている場合は、この回答を自由に編集してください!)

これは私が検索したansでした。ありがとう.. +1
Adhikari Bishwash

5

以前は機能していたと思いますが、今は機能しません。

これは、マニフェストファイル内のパッケージ名を変更すると発生する可能性があります

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

パッケージ名を変更したい場合

  1. マニフェストファイルでパッケージ名を手動で変更します。
  2. R.javaクラスをクリックし、F6キーを押します。これにより、クラスを他のパッケージに移動でき、そのクラスへのすべての参照が更新されます。

あなたは神です!私はから私のプロジェクトを変えたcom.example.rickydam.txtbookscom.txtbooks.txtbooks新しいプロジェクトを作ることによって、私は新しいプロジェクトへの上にすべてを移動するが、それはR.私を見つけることができなかったSDK-ツールを、Gradleのとの同期、キャッシュを無効化するプロジェクトを清掃、プロジェクトを再構築、再インストールしようとしました...何も機能しませんでした!しかし、あなたの解決策は私の問題を解決しました!再度、感謝します!コーディングを続けてください!
リッキーダム

4

Bazelを使用して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.

android_library/ android_binaryAndroidManifest.xml正しいpackage=属性でを使用していることを確認します。またはでcustom_package属性を使用している場合は、正しく綴られていることを確認してください。android_libraryandroid_binary


3

インポートandroid.Rを削除します。すべてのファイルから..プロジェクトをクリーンアップしてプロジェクトをビルドすると...生成されます


3

サンプル:私のパッケージはcom.example.mypc.f01です。エラーを修正するには、アクティビティに以下の行を追加します。

import com.example.mypc.f01.R;


3

以下は、このエラーを削除するために使用できるいくつかのテクニックです:-

  1. プロジェクトをクリーンアップします。Buidl-> clean Project
  2. プロジェクトの再構築、ビルド->プロジェクトの再構築
  3. マニフェストを開き、リソースが不足していないか確認します
  4. 特定のIDへのレイアウトのチェックイン、欠落している場合は追加
  5. 上記の手順が機能しない場合は、キャッシュを無効にしてAndroid Studioを再起動します

2

私の場合、プロジェクトで複数のパッケージを作成していることに気付きました。Androidマニフェスト内で、プロバイダー名が.provider.MyContentProviderではなくMyContentProviderの値を誤って保持していることがわかりました。私の主なパッケージ(UI付き)は、co.companyname.databaseではなくco.companyname.database.providerでした。

次に、影響を受けるクラスのインポートステートメントを右クリックして、Android Studio(0.8.6)にインポートステートメントを最適化するように要求しました。また、IDEの右上隅にあるAS検索バーで.Rを検索すると、パッケージの一部である自動生成されたR.javaファイルを見つけることができます。この時点では、何も変更する必要はありません。Androidマニフェストファイルを修正して再ビルドすると、スタジオでプロジェクトが修正されます。

もう1つの項目は、1つのクラスでtoString()。length()を使用して文字列を評価していたが、それらをTextUtils.IsEmpty(stringVal);に交換したことです。問題を解決するために私が行った他のことは考えられません。

これが誰かを助けることを願っています。

注意-これはすべてAS 0.8.6に対応しています

PS

R.javaは自動生成されるため、ヘッダーを読みます:/ * AUTO-GENERATED FILE。変更しないでください。* *このクラスは、見つけたリソースデータから* aaptツールによって自動的に生成されました。*手作業で変更しないでください。* /


2

これを経験したとき、私は新しいプロジェクトを作成し、古いプロジェクトから新しいプロジェクトにファイルをコピーしました。

  1. 新しいプロジェクトを始める
  2. 古いプロジェクトを新しいプロジェクトに追加し(コピー、レイアウト、drawables、com.packagenameを右クリックして...)、古いプロジェクトファイルを貼り付けます。

しかし、私はまだ同じ問題を抱えていました:R does not exist。次に、マニフェストをメモ帳からAndroid Studioマニフェストにコピーして貼り付け、マニフェストファイルのパッケージ名を変更していないことに気付きました。

したがって、マニフェストのパッケージ名を新しいプロジェクト名に変更すると、作成した新しいプロジェクトは問題なく動作しました。


1

Rエラーが発生しているファイルにどのファイルをインポートしていますか?

Rファイルについての私の理解は、Androidアプリ内のすべての属性への参照リストが自動的に生成されるということです。したがって、自分で変更することはできません。

Eclipseを使用してこのプロジェクトをビルドしていますか?古いプロジェクトでは、Eclipseを更新する前にこれらのエラーが発生していましたか?エラーが発生している参照は何ですか?

別のアプリでコピーした他のコードから別のRファイルをインポートしていないことを確認してください。


プロジェクト内のAndroidManifest.xmlファイルとproject.propertiesファイルに同じターゲット/最小バージョンのAndroidが表示されない場合、Rの問題がありました。
Music Monkey

1

コンピュータを切り替えて、USB経由で転送されたファイルから古いプロジェクトをインポートしようとするたびに、この問題が発生します。

私の回避策は、新しいプロジェクトを作成し、ファイルをIDE(現在Netbeansを使用)にコピー(ドラッグ)して、再ビルドすることです。これは煩わしくてちょっとハックな解決策ですが、問題を修正します。

これが発生した場合、最悪の場合は、ファイルをバックアップしてプロジェクトを削除し、そこにファイルをドラッグして再コンパイルする必要があります。それがうまくいかないことを願っていますが、それがあなたの核となる選択肢になるでしょう。


1

あなたは試すことができます

Android Studioのトップメニュー>ファイル>キャッシュを無効にする/再起動...

キャッシュを無効にする/再起動ボタンをクリックしてプロジェクトを再起動します

フラグメントクラスRクラスの一部が正しく解決されなかった場合は、R.xxxx.xxxを再度解決します

その後、プロジェクトを再構築します

それが役に立てば幸い


0

Android Studioでこのエラーが発生した場合:

Gradleモジュールファイル-> defaultConfig-> applicationId設定を確認します。

AndroidManifest.xml->マニフェストパッケージタグを確認します。

すべてのsrc Javaファイルのパッケージ宣言を確認してください。

同期、クリーン、Gradleで再構築。

独自のRファイルを作成しないでください。RはソースJavaファイルとビルド設定から自動生成されます。


0

「エラー:パッケージRが存在しません」があり、javacがR.javaにアクセスできないと想定しました。
そのため、%PROJ_LOC%\ genをsourcepathに追加しました。SOURCEPATH =%PROJ_LOC%\ src;%PROJ_LOC%\ gen

Android StudioまたはAnt(またはXML)を使用していません。



0

私のプロジェクトのエラーを取り除きました。サンプルプロジェクトをインポートし、パッケージフォルダーを変更しましたが、Javaファイルの1つでパッケージを更新していませんでした。

このエラー「パッケージRが存在しない」の最も可能性の高い原因は、Javaまたはマニフェストファイルのパッケージ名が正しくないことです。それが正しく同期していることを確認してから、クリーンビルドを実行してください。


0

Android Studioにプロジェクトを再インポートするだけで解決する場合があります。


0

間違ったパス:プロジェクトは、画像へのポインターを「キャッシング」し、パスの名前を変更した場合(例:リファクタリングされたパッケージまたはフォルダー)。次に、Rの文字をもう一度入力するだけで、エディターが正しいパスを提案し、機能します。この場合、ファイル名は正しく、R。ポインターで参照されるコンテンツは存在しますが、パスが間違っているため、クリーンでビルドは機能しません。


0

R.破損のもう1つのケースは、注釈処理です。

一部の処理は、特定のフォルダーまたはフォルダーレベルにあるクラスを参照する場合があります。必要なクラスを別の場所に移動すると、R。を不明なクラスとして取得できます。

残念ながら、この問題のエラーポインターはAndroid Studioでは明らかではありません。


0

R.javaはビルドごとに変更されるため、自分で作成してもメリットはありません。

たとえば、R.somethingを使用することを忘れないでください。AndroidManifest.xml内のパッケージ値と同様のパッケージ値を持つクラス内のR.raw.filename

R.リソースIDは現在のアプリケーションまたはライブラリに対して定義されており、それらはすべてコンパイル時に存在するかどうかがチェックされるため、現在のアプリケーションまたはライブラリをターゲットにしていない「コード」からアクセスできるようにしても意味がなく、他の場所で使用されます。



-2

私は私の問題を解決します:

パッケージRは存在しません

後藤のAndroidManifest.xmlファイルが変更され、minSDKVersion="17"19から


失礼ですが同意できません。現在の標準に従って、AndroidManifest.xmlファイルにminSDKVersionを含めないでください。あなたがそれを持っているなら、それをAndroidManifest.xmlファイルから削除してください、それは冗長なコードです。minSDKVersionとtargetSdkVersionはbuild.gradleファイルでのみ定義する必要があります。
Ajay B
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.