Rを解決できません-Androidエラー


1072

新しいAndroid SDKをダウンロードしてインストールしました。それを試運転するための簡単なアプリケーションを作成したかったのです。

ウィザードはこのコードを作成しました:

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

しかしEclipseは私にエラーを与えます

Rは解決できません

オンライン

setContentView(R.layout.main);

どうして?

PS:私は名前のXMLファイル持っているmain.xmlの下にres/layout/


それでもEclipseでR.javaを更新または生成できないという問題が発生する場合。可能な解決策は、ダミーのxmlを作成し、そのxmlを削除することです。私の場合、これが解決策です
デニル

正直なところ、これは馬鹿げているように聞こえますが(実際はそうです)、AndroidManifest.xmlを変更してから、その編集を元に戻し、ファイルを保存するとうまくいきました。その後プロジェクトをクリーンアップすると、再び壊れてしまいました。この間ずっと、私はXcodeがこれらの種類の不思議なエラーがあった唯一のIDEだと思っていました。
2012

3
プロジェクトを右クリックしてみましたか-> Android Tools-> Fix Project Settings?
セルゲイ

6
XMlレイアウトファイルを確認してください。xmlにエラーがあり、R.javaを生成できない場合は、エラーが生成およびクリーン後に発生します。
swiftBoy 2014

1
ヒント:IDEをEclipseからAndroid Studioに切り替えたとき、これは起こりませんでした。
マタ2014

回答:


840

この問題も追跡した後、Androidのドキュメントでこのメモを見つけました。

http://source.android.com/source/using-eclipse.html

*注意:Eclipseは、リソースを使用するファイルの先頭に「import android.R」ステートメントを追加することを好むことがあります。特に、インポートをソートまたは管理するようにEclipseに要求する場合はそうです。これにより、メイクが壊れます。これらの誤ったインポート文を探して削除します。*

Androidのサンプルチュートリアルを実行している間、よくCtrl+ Shift+ Oコマンドを使用して「インポートを整理」し、不足しているインポートステートメントを生成します。これにより、R.javaビルド時に自動的に生成されるクラスを非表示にする不正なインポート文が生成される場合があります。


32
これも同様に発生しますが、レイアウトファイルがまとまって発生することもあります。
GHz

113
この古典的なバグはEclipse for YEARSにあり、修正されることはありません。何千人もの人々がこの同じ問題に直面しています。
キャロル

52
Eclipse開発者は、この$£%& "$&/バグを削除してください!Google開発者は、iPhoneのXcodeに似た£$&$"%&Androidスイートを入手してください!
Abramodj 2012年

18
@ 2-Stroker:これはバグです。Eclipseウィザードを使用して新しいandoridブランチプロジェクトを作成したときに、「Rを解決できません」というメッセージが表示されました。setContentView&getMenuInflater行をコメントアウトする必要があり、それからEclipseがR.javaを生成した後、setContentView&getMenuInflatorのコメントを外すことができました。Abramodjは正解です。「hello world」の例でもコンパイルできない場合、環境には深刻な問題があります。グーグル修正!
CF_Maintainer 2013年

5
このようなアイテムを修正するために、Googleはeclipse.orgに資金をどのように付与しないのですか
Cris

391

Rが生成されない、または消えてしまうという問題が発生するたびに、これは、アプリケーションのビルドを妨げるXMLレイアウトファイルの問題が原因でした。


21
+1。parent = "android:WindowTitleBackground"を含む古いstyles.xmlファイルがあり、それがビルドを破壊し、「gen」に生成されるものをすべて妨げていました。最初にプロジェクトを開いたときのコンソールウィンドウを除いて、エラーは実際には報告されませんでした。
Scott Persinger

12
正確に言うと、別のプロジェクトからレイアウトをコピーしてこれを取得している場合、欠落しているドローアブルを探します-これにより即座に修正されます!
Gabor

4
私は同じ問題を抱えていますが、レイアウトのいずれかを魔女を知る方法はありますか?
Sergey Kucher

3
はい、ドローアブルファイルが見つからなかったため、Rファイルが生成されませんでした。奇妙なことに、メニューリソースのandroid:icon="@drawable/XXX"宣言<item>がありましたが、ドローアブルリソースXXXが見つからなかったことを示す赤い波線がありませんでした。他の例で"@drawable/YYY" 、YYYが見つからなかったときフラグ立てられましたが、この場合はありませんでした。何らかの理由で。
2013

5
はい、すばらしい解決です。このエラーが発生すると、すべてのレイアウトファイルにエラーがあると何度もマークされます。これは、すべてのレイアウトファイルがRを探しているためです。私の場合、ドローアブルがありません。
トッドペイントン2013

201

いつでも

Rは解決できません

次に、/resディレクトリを確認します。ファイルにエラーがあり、アプリケーションのビルドを妨げている可能性があります。たとえば、レイアウトファイルであるか、リソースが不足していることが原因である可能性がありますが、XMLファイルですでに定義されています。

ファイルの命名規則に準拠していないres / drawables-mdpiなどのフォルダーに、未使用(!)または参照されていない(!)画像が追加されている場合([a-z0-9_。]のみを含む場合があります)、 R.javaクラスが生成されない可能性があり、他のすべての投稿が参照するイベントのチェーンが発生します。それが役に立てば幸い!


サンプルApiDemosでこの問題が発生しました。strings.xmlファイルで欠落しているリソース。XMLエラーはEclipseのコンソールにリストされます。
lemotdit 2010

ありがとうございました!これは私の問題でした、エラーが発生したレイアウトがありましたが、それに関するメッセージはありませんでした。

29
エラーを確認するにはどうすればよいですか?ビルド/実行時にコンソールに何も表示されない
Vincent

4
エラーの原因となるxmlファイルを見つける方法は?Eclipseはそれらをマークしません!
2014

1
hdpiフォルダーに同じ名前の画像が2つあり(1つはpng形式、1つはjpg形式)、そのうちの1つを削除すると問題が解決しました
Haseeb Jadoon

134

私のプロジェクトには最初にr.java。が含まれていますが、R.layout.mainは問題なく動作します。 ?

インポートを見てください。おそらく次の行です:

import android.R;

そこにあります。その場合は、プロジェクトを削除して、プロジェクトがデフォルトのAndroidリソースクラスではなく、/ res /フォルダーから自動生成されたクラスでRを解決するようにします。


5
@Dimitarに感謝します。問題が解決しました。Eclipseと自動インポート機能は、インポート行を自動的に追加してくれたようです。
Steven

7
大文字を使用してレイアウトに名前を付けたときにも同様の問題が発生しました
Travis

これは、「Rが見つかりません」と表示される5つの理由の1つです。以下のリンクにあるメイン5を示す画像を含む問題/解決策のページを編集しました。これはよくある問題なので、リストが人々の役に立つことを心から願っています。spragucm.wordpress.com/2014/05/13/…–
Chris Sprague、

Rを削除した後、一部の場所でRがクラスとして使用されており、現在エラーが発生しています。解決方法は?
Narendra Jaggi、2015年

96

そして、この問題を引き起こす可能性のある別のこと:

新しいADT(v。22)をインストールしました。genを含むフォルダの作成を停止しましたR.java。解決策は、Android SDK Managerから新しいAndroid SDKビルドツールもインストールすることでした。

ここに解決策が見つかりまし


私も。そして、SDKマネージャーを選択すると、ビルドツールがインストール用に自動チェックされ、インストールされていないというメッセージが表示されます。何を与える???
DavidはHotspotOfficeで2013年

同じ問題がありました。これを共有してくれてうれしいです。自分のコードのエラーを2日間見てみました。このエラーメッセージは解決するのが非常に難しいため、私はGoogleに非常に失望しています。ツール自体が原因を適切に報告していないにもかかわらず、それは独自のエラーが原因です。私はプロジェクトに同じ時間の変更を加えたので、それは私のせいだと思いました。
Reijo Korhonen 2013年

5
私のために働いた、ありがとう!それは私のマントラを強化するだけです:「開発中に何も更新しないでください」。
Rodrigo Dias

私は答えを探しにぶらぶらしていたが、何もうまくいかなかった。私はそれが日食かSDKの問題だったと思います。だからあなたが言っているように、私は前のEclipseのバンドルを削除して再インストールします。そしてそれは働いています。あなたの答えは役に立ちました
初心者

これは私の場合の問題でした!Rエラーの修正、参照の追加/削除、その他のオプションの試行を1日無駄にしました。MineはADTの新しい新しいセットアップであり、新しいandroidプロジェクトの作成でしたが、それでもエラーが発生していました。結局、Android SDKツール、Android SDKプラットフォームツール、SDKビルドツールの利用可能なすべてのアップデートをインストールする必要がありました:p
Saurabh Kumar

87

R.javaアプリケーションのビルド中にAndroid Eclipseプラグインが作成するファイルです。R.java「gen」ディレクトリの下に作成されます。このファイルは、「res」ディレクトリの情報から生成されます。Eclipseメニューで[プロジェクト]-> [クリーン...]を選択して実行すると、R.javaファイルが削除されてから再生成されます。

AndroidManifest.xmlファイルのパッケージ名を変更すると、「Rを解決できません」という問題が発生します。Androidパッケージ名を使用して、R.javaファイルを格納する「gen」ディレクトリの下にサブディレクトリを作成します。

R.javaAndroidパッケージ名を変更した場合、Eclipseはファイルの場所について混乱するため、クリーンな実行に問題がある可能性があります。下のサブディレクトリの名前を変更しgenて新しいパッケージ名と一致させるか、パッケージ名を古い名前に戻すことができます。クリーンアップを実行してから、パッケージ名を新しい名前に変更します。これは、パッケージ名を変更している間にEclipseがビルドを試みないようにする場合に最適です。[プロジェクト]メニューの[自動的にビルドする]オプションをオフにし、[クリーン...]ダイアログで[すぐにビルドを開始する]かどうかを尋ねられたら、チェックボックスをオフにして、変更中にビルドを試行しないようにします。パッケージ名。名前を変更した後、「Build Automatically」を再びオンにすることができます。

AndroidManifest.xmlファイルパッケージ名がJavaパッケージ名と一致しない場合、Eclipseは自動的に「import <your Androidパッケージ名> .R;」を追加することに注意してください。.javaRへの参照を含むすべてのファイルに行をAndroidManifest.xml 追加します。パッケージ名を変更すると、Eclipseがこれらの追加されたインポートのすべてを更新しない場合があります。その場合は、Eclipseリファクタリング(ALT+ Shift+ R)を使用して、Javaファイルの1つにあるインポート文を新しいAndroidManifest.xmlパッケージ名に変更してください。「自動ビルド」を無効にしている間にこれを行うのが最善です。


21
これは参照なしのカットアンドペーストのように見えます
Casebash 2010

1
ファイルの複数のコピー/貼り付けと名前のリファクタリングは、すべてのファイル名と内容がOKであるにもかかわらず、同じ問題を引き起こします。プロジェクトをクリーンアップし、R.javaを手動で削除し、すべてのインポートヘッダーを削除してから、これらのインポートヘッダーを再構築します(CTRL + SHIFT + Oを使用)。
hornetbzz

これでうまくいきました。マニフェストのパッケージ名を変更しました。正しいインポートを追加するために、生成されたRクラス値を参照するクラスでctrl-shift-Oを使用する必要がありました。
Chuck Krutsinger

これで修正されました。また、過去にインポートの問題が発生したこともありますが、今回の問題は、マニフェストのパッケージ名がsrcフォルダーのパッケージ名と一致していなかったことです。
ジム・レンジ

アプリケーションには2つのアクティビティがありました。Rが生成されたものとは異なるパッケージ名がありました。私は手動でRをインポートする必要がありましたimport com.example.main.package.name.R;
Oliver Moran

85

ウィルの言ったことは正しかった

Rは、リソースを識別するために使用される定数を保持する、自動的に生成されるクラスです。R.javaファイルがない場合(1.5 SDKの> Eclipseではgen / eu.mauriziopz.gps / R.javaになります)、プロジェクトを閉じて再度開くか、[プロジェクト]> [すべてビルド]に移動することをお勧めします(そして、> Josefの推奨に従って、「自動ビルド」を選択します)。それでも問題が解決しない場合は、新しいプロジェクトを作成してみてください。問題が再現する場合は、ここに再度投稿してください。詳しく説明します。

しかし、最初の問題を引き起こしている別の問題があることがわかりました。SDKディレクトリ内のツールには実行する権限がなかったため、Eclipseには存在しなかったようで、R.javaファイルをビルドしませんでした。

したがって、権限を変更して「自動ビルド」を選択すると、問題が解決しました。


@Jignesh- cd $ANDROID_SDK_ROOT/build-tools/<version>。その後chmod a+xのようなファイルにaaptaidldexdumpdx、などのANDROID_SDK_ROOTご使用の環境に設定する必要があり、それはあなたのSDKのインストールを指します。たとえば、/opt/android-sdk。その重要なのは、両方を設定するANDROID_SDK_ROOTと、ANDROID_NDK_ROOTAndroidのツールが内部的にそれらを使用しているため。推奨されるNDKディレクトリを参照してくださいNDKユーザーのリスト。
jww 2014

@ルイス..私はすでに「自動ビルド」を選択していますが、エラーはまだそこにあります。
d_unknown 2015

39

Rは、リソースを識別するために使用される定数を保持する、自動的に生成されるクラスです。R.javaファイルがない場合(1.5 SDKを使用するEclipseではgen / eu.mauriziopz.gps / R.javaです)、プロジェクトを閉じて再度開くか、[プロジェクト]> [すべてビルド](およびJosefの推奨に従って、「自動ビルド」を選択します。それでも問題が解決しない場合は、新しいプロジェクトを作成してみてください。問題が再現した場合は、ここにもう一度投稿してください。詳細を説明します。


8
これでうまくいきましたが、最初に「プロジェクト->クリーン...」を実行する必要がありました。
Matt Connolly、

27

すべてのファイルを閉じ、プロジェクトをクリーンアップして、Eclipseを再起動します。


23
+1しかし、時には3回のEclipseの再起動とその間の7つのプロジェクトのクリーンアップが必要になる場合があります。試してみてください;-) #rant
Matthias

3
.xmlファイル(strings.xml ...)に触れて(編集+保存)で混ぜます。
Ali Shakiba、

24

チェックインする価値がありAndroidManifest.xmlます。属性のpackage値は正しいです。

あれは:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

これを変更すると、R.javaが再生成されます。


私の元のパッケージ名はcom.xxxxxdroid.routerでした。アプリcom.xxxxxdroid2.routerの新しいバージョンを作成しました。これを行ったら、AndroidManifest.xmlのパッケージ名を更新する必要がありましたが、それよりもずっと後に、古いクラスをコピーして貼り付け始めたのはその後のことです。ポインタをありがとう!
ユージーンファンデルメルウェ

これで問題が解決しました。xmlファイルで作業していましたが、どれをロードしたか覚えていてよかったです。おかげで...
GHz

19

このエラーは、パッケージのルート名前空間とは異なる名前空間にアクティビティを追加した場合にも発生する可能性があります。

たとえば、com.example.myappがパッケージのルート名前空間である場合、com.example.myapp.activities名前空間にアクティビティを追加できます。

これにより、「Rを解決できません」エラーが発生します。

アクティビティのデフォルトの名前空間にあるRのインポートを修正するには、次のようにする必要があります。

import com.example.myapp.R;

これは私を助け、ルートの下のパッケージにアクティビティを移動し、ルートパッケージをインポート(com.example.myapp.R;をインポート)として追加して問題を解決しました。
熱心なアナリスト、2013

19

前の回答のすばらしい提案に加えて、Androidターゲットが設定されていることを確認してください。

  1. プロジェクトを右クリックします
  2. プロパティを選択
  3. 左側のメニューでAndroidを選択します
  4. 適切なプロジェクトビルドターゲットの横にあるボックスにチェックを入れます。
  5. [適用]をクリックして[OK]をクリックします

編集:1年後、別の原因が見つかりました。ドローアブルフォルダーに.png画像と同じ名前の.jpg画像がありました。コードでこの画像を参照すると、プログラムが混乱し、「Rを解決できません」というエラーが発生した可能性があります。


17

AndroidビルドツールフォームSDKマネージャーがインストールされていることを確認してください

プロジェクトを右クリックして[プロパティ]-> [Javaビルドパス]を選択し、[ライブラリ]を選択してandroid-support.jarを追加し、次の手順に従います。

[プロジェクト]-> [プロパティ]-> [Javaビルドパス]に移動し、[順序とエクスポート]タブを選択します。チェックされたandroid-support .jarライブラリをリストの一番上に設定します。そして、クリーンして再構築します。ほとんどの場合に機能します

ここに画像の説明を入力してください


15

私は100万回この問題を抱えていて、その原因を理解しました。名前に大文字を含むXMLファイルを作成しました。のすべてのXMLファイル名が/res一致する必要があります[a-z0-9\\._]


また、スタックオーバーフローではすべてのバックスラッシュをエスケープする必要があることに気づきました。

14

最も簡単な解決策-オートジェネレーターを起動するために、作業中のXMLファイルを保存する必要がある場合があります。

ファイル(main.xmlなど)を保存してからR.javaファイルを削除し、再生成されたR.javaがR解決の問題を解決するかどうかを確認します。


本当です。場合によっては、XMLに問題がない(赤い波線または黄色の感嘆符)問題があると表示された場合は、問題のある行を削除し、XMLファイルを保存して、その行を貼り付けて再度保存します。自動でビルドしていない場合は、その後にもう一度ビルドしてください。Eclipseは時々バカです。:)
hotshot309

上記の他の回答にもかかわらず、これは私にとって正しい回答であることがわかりました。サンプルコードをコンパイルしようとすると、「APKが見つかりません」というメッセージが最初に表示されます。次に、大量の「Rを解決できない」エラーを生成するCleanを実行し、.xmlファイルを開いて手動でエラーを保存しました。クリアされ、コンパイルできました。
sXe

真実:プロジェクトをクリーンアップした後、R.javaはなくなりました-strings.xmlを編集して保存すると問題が解決しました。
BurninLeo

12

XMLファイル名を確認してください。それらがすべて小文字であることを確認してください。

また、画像リソース名もすべて小文字になっていることを確認してください。jpgファイルの名前に大文字が含まれていたため、プロジェクト全体でRの未解決エラーが発生しました。


これに対する+1が私の問題でした。画像には、eIcon.pngではなくeicon.pngのような名前を付ける必要があります。コンソールを見てエラーを見つけました。無効なファイル名のファイルでエラーが返されました:...
jasonflaherty '11

12

R生成されたクラスです。Android開発ツール(ADT)を使用している場合は、プロジェクトがビルドされるたびに生成されます。「自動的にビルド」がオフになっている可能性があります。


10

このエラーは、x64 Linux Mintインストールで発生しました。パッケージがインストールされていないADBため、結果はバイナリの失敗であることがわかりましたia32-libsapt-get install ia32-libsEclipseを実行して再起動するだけでエラーが修正されました。

x64ディストリビューションにia32-libsがない場合は、Multiarchを使用する必要があります。

この投稿の#4と#5を確認してください:http : //crunchbang.org/forums/viewtopic.php?pid=277883 # p277883

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


64ビットのLinuxをインストールしている場合は、ia32-libsが必要になることに注意してください。それがない場合、adbコマンドを実行しようとすると、ファイルまたはディレクトリが見つからないという奇妙なメッセージが表示されます。
rs_atl

10

SDKツールの更新/インストールが必要になる場合があります。Android SDK Managerをもう一度再起動して、新しいアイテムをインストールします。ここに画像の説明を入力してください


9

SDKツールの更新が必要になる場合があります。Android SDK Managerをもう一度再起動して、新しいアイテムAndroid SDK Build-toolsをインストールします。

ここに画像の説明を入力してください


8

私にもこの問題がありました。「app_name」という文字列リソースをstrings.xmlファイルから誤って削除してしまったため、サイレントエラーが発生したことがわかりました。再度追加すると、Rクラスが正常に生成され、すべてが正常に動作しました。


6

新しいXMLレイアウトファイル名を小文字にしてみてください。たとえば、のmy_file.xml代わりに使用しますmyFile.xml


+1はい!正しい命名規則に従っていることを確認してください... [a-z0-9_。]
jasonflaherty

6

さらにR.java自動生成されないもう1つの理由は、res / drawable-hdpires / drawable -mdpi、またはres / drawable-ldpiのようなディレクトリがある場合です。

1.6+はこれらのディレクトリでは問題ないようですが、1.5では必要ありません。それらのディレクトリを削除すると、R.java自動生成が再開されました。


6

最初のチェックでは、xmlレイアウトにエラーがないかどうかを確認し、エラーが最初に解決するかどうかを調べます。

それ以外の場合は、プロジェクトからjunit依存関係を削除して、プロジェクトを再ビルドします。

ここに画像の説明を入力してください


5

多くの場合、これはプロジェクトの作成時に指定したMinSDKバージョン番号が原因です。例:

2.1を最低限にする場合、Android 2.1は実際にはAPIレベル7です。

ダウンロードしてインストールしたSDKを閲覧すると、私が話していることがわかります。(C:\android-sdk-windowsたとえば)SDKをインストールした場所に移動し、「platforms」という名前のフォルダーを開きます。フォルダとして「android-7」のようなものが表示され、それを開くと、source.propertiesと、テキストエディターで開いたときに、対応するプラットフォームのバージョンを示すファイルます。

プロジェクトを作成し、「ビルドターゲット」APIを選択する必要がある場合、「APIレベル」という名前のリストの最後の列は、MinSDK設定に入力するときに探している番号を示します。

これはおそらくR.java、プロジェクト>生成>パッケージ名> R.javaでファイルが作成されない最も一般的な間違いの1つです。


5

を削除しmain.out.xmlます。私はこれに慣れていないので、このファイルの用途はまだわかりませんが、削除すると問題は解決しました。


5

Androidトップメニューリストに移動します。[ ビルド ]メニューをクリックし、[ビルド]の下で[ プロジェクトの再ビルド]をクリックします。

ここに画像の説明を入力してください


4

私はAndroid 8の例を持っていて、Android 7 SDKを使用しようとしていました。プロジェクトを閉じてアプリケーションフォルダーを再度開き、Android 8 SDKの使用を選択すると、Rファイルを見つけることができました。お役に立てれば。


4

私の場合、でエラーが発生しましたAndroidManifest.xml。XMLファイルにエラーがないようにする必要があると言う人もいますが、私はres /フォルダーのみを調べていました。可能な限り多くのエラーを見つけて修正します。問題が解決する可能性があります。


私の場合、これが犯人でした。R.javaがまだビルドされていない場合、manifest.xmlファイルにエラーがあると、この問題が発生する可能性があります。
Scott Biggs

4

誰かが興味を持っている場合(私はここであなたの命を救うかもしれません)、エラーがありました、R.xml解決できません、GLSプロジェクトでは少し異なります。うーん。を調べたR.javaところ、自動生成されたクラスが見つかりました。XML.java

解決?それはに新しいフォルダ必要resres\xmlと呼ばれるファイルをdefault_values.xml がでます。その後、すべてがOKでした。

あなたがそのファイルを持っていない場合に備えて、それは:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
</PreferenceScreen>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.