EclipseでのAndroid向けの開発:R.javaが再生成されない


309

私のR.javaは決して更新されないため、新しいリソースに関する情報が含まれていないことがわかったので、削除することにし、Eclipseが新しいリソースを生成すると考えました。しかし、それは起こらなかったし、今はR.javaを持っていない。どうすれば再生成できますか?

Windows 7を使用しています。

コメントの1つから:「プロジェクトの実行 -> クリーンが問題の原因です。クリーンするとR.javaが削除されます...何らかの理由でプラグインがファイルを再生成しません。」


クリーニングがうまくいかなかったときの解決策:SDKマネージャーでビルドツールをダウンロードして、システムを再起動する必要がありました。ADT 22.3.0を使用しています。
Moradnejad

回答:


177

このサイトは提案します:

プロジェクトでクリーンを実行すると、生成されたすべてのJavaファイル、つまりRが再生成されます。

...そして...

Eclipseでは、[プロジェクト]メニューの下にあるオプションが自動的にビルドされます。これは、変更が行われるたびにR.javaファイルを作成するのに役立ちます。[クリーン...]オプションも[プロジェクト]にあります。

このサイトは別の解決策を提案しています。


1
誰が思ったでしょう、ここで+1してくれてありがとうここでレイアウトに問題があったので、R.Javaは作成されていませんでした。素晴らしいヘッドアップ!乾杯。

101
Project-> Cleanを実行すると、問題が発生します。クリーニングを行うとR.javaが削除されます...何らかの理由でプラグインがファイルを再生成していません。
セリン

7
インストールしたのとは異なるAndroidサポートAPIバージョンを必要とするライブラリーにリンクしたときに、このポップアップが表示されました。依存関係が機能せず、その後、Rが生成されませんでした。他の人が言ったように、エラーログに表示されるので、そこで確認してください。
mikebabcock 2012

1
私の場合、プロジェクトをクリーンアップすると R.java、プロジェクトが再生成されるのではなく、が削除されるだけです。stackoverflow.com/questions/13065425/...
RobinJ

96
resディレクトリにエラーがある場合、R.javaは再生成しません。エラーの削除->私の場合の問題の解決:)
JavaRunner

300

私はこれが壊れたレイアウトで私に起こっているのを見つけました、そしてすべてが爆破しました。リラックスしてください。1つのセミコロンを忘れてCのプログラミングを初めて学んだときの古い間違いのようで、100個のエラーが発生します。多くのパニックが発生し、すべてのボタンを押して、事態を悪化させます。

解決

  • R.へのリンクが壊れていないことを確認してください。XMLファイルのすべてのエラーを修正します。ADKのいずれかが破損している場合、R再生成されません。
  • 何かにヒットimport android.Rしてアクティビティで作成した場合は、それを削除します。
  • プロジェクトを実行->クリーン。これにより、RとBuildConfigが削除され、再生成されます。
  • プロジェクト->自動的にビルドがチェックされていることを確認してください。そうでない場合は、を使用して手動でビルドしMenu -> Project -> Build Projectます。
  • エラーが消えるまで数秒待ちます。
  • 動作しない場合は、/ gen /フォルダー内のすべてを削除します
  • それでも機能しない場合は、プロジェクトを右クリックして、[Androidツール]、[プロジェクトのプロパティを修正]の順にクリックしてみてください。
  • あなたのチェック* .propertiesファイルの(あなたのアプリケーションフォルダのルートフォルダ内)のファイルを、そこでのリンクが壊れていないことを確認してください。
  • プロジェクト>プロパティ> Androidを右クリックします。ページの右側にあるプロジェクトビルドターゲットとライブラリのセクションをご覧ください。ビルドターゲットは、AndroidManifest.xmlのターゲットと一致する必要があります。AndroidManifestでターゲット17に設定されている場合は、ターゲット名がAndroid 4.2であることを確認してください。ライブラリの参照の下にXがある場合は、ライブラリを削除して、緑色のチェックマークが表示されるまで再度追加します。これは、いくつかのファイルとフォルダーを移動した場合に発生する可能性があります。

Rが再生成しない場合の対処

これは通常、破損したXMLファイルがある場合に発生します。

  • 主に/res/フォルダー内のXMLファイル内のエラーを確認する
  • 一般的な場所がある/layout//values/あなたが最近それらのいずれかを変更した場合は特に、
  • 確認してくださいAndroidManifest.xml。文字列を変更し、文字列名をから変更するのを忘れることがよくありますAndroidManifest.xml
  • Android SDK Build-toolsインストールされていることを確認します。ウィンドウ-> Android SDK Manager->ツール-> Android SDKビルドツール
  • を更新するときはAndroid SDK Tools、とも更新しAndroid SDK Platform-toolsてくださいAndroid ADK Build-tools。それらが一致しない場合、ビルドはサイレントに失敗します。
  • 問題が見つからない場合は、/ gen /を右クリックし[ローカルの履歴から復元...]をクリックします。R.javaにチェックマークを付け、[復元]をクリックします。問題が解決しない場合でも、余分なエラーをクリアして、問題を見つけやすくします。

21
これがトップの答えになるはずです!
john.k.doe 2013

6
確かに、自分の環境ではまだツールの更新が必要であることに気づきました。
woodleg.as

11
Window-> Android SDK Manager-> Tools-> Android SDK Build-toolsこれは私のためのソリューションで、賛成です

1
私は何十もの回答を読みましたが、この1つだけがSDKビルドツールのチェックについて述べていました。私は盲目的に日食に私のAndroidツールをダウンロードしてインストールするように勧められたときにインストールします。その部分を完全に逃しました。
Justin Aquadro、2014年

1
コンソールを確認すると、修正が必要な詳細なエラーが表示される場合があります。その後、ビルドできます。これは私の場合に役立ちました
david72

40

同じ問題がありました。チェックアウトしたところ、レイアウト下のXMLリソースの名前が正しい命名規則になっていないことがわかりました。大文字がいくつかありました。それで、すべての文字を小文字にするために名前を変更しました。魔法はうまくいきました。


2
tnx ...レイアウト名に大文字を使用できると思っている愚かな私
ケビン

私もうまくいきました:コンソールはこれを報告しました:[2010-09-22 16:19:40-myproject] res \ drawable-ldpi \ downloadNow.png:Invalid file name:must must only [a-z0-9_。]
サミ

1
ありがとう、これは私の問題でした。レイアウトフォルダーに大文字の.xmlファイルがあり、ファイルしたR.java全体が見つからないか、それが原因で生成されませんでした。それを知る唯一の方法は、命名規則では大文字が許可されていないことを認識することでした。エラーは生成されませんでした。
Lemmings19 2012年

1
リソースファイルまたは属性に名前を付けるときは、Javaで変数に名前を付けるような名前を付けてみてください。R.classはリソース、つまりid、drawable、xmlのファイル名を静的な最終的な定数で公開するため、「-」、「特殊文字」を指定すると、Rの生成が停止します。
IronBlossom、

1
うん、これは私にとって問題でした。res / xml内のファイルが、存在しないレイアウトファイルを参照していたため、R.javaが生成されなかったようです。そのため、Cleanを実行すると、R.javaが見つからず、何百ものインポートエラーが発生しました。 ...
セリン

28

R.classが突然なくなってしまう1つの理由は、XMLファイルにエラーがある場合です。たとえば、許可されていないmyCoolLayout.xmlのような名前に大文字が含まれるXMLファイルを追加するとします。または、既存のファイルを指さない参照などがある場合。


17

Eclipseでは、単にProject-> cleanを使用してプロジェクトをクリーンアップします。R.javaは自動的に(再)作成されます。

何らかの理由で 機能しない場合 layout.xmlファイルにエラーが含まれていないことを確認してください。Eclipseはここでは少しバグがあるようです。時には、XML内のエラーやパッケージエクスプローラーをマークしません。そのような場合:「クリーン」を使用した後、「コンソール」または「問題」ビューを見てください。すべてのエラーがそこに表示されます。それらを修正し、きれいにやり直してください。

注:Rファイルがないために発生するエラーを修正する必要はありません!XMLファイルとその他のプロジェクトエラーを修正して、クリーンな状態で使用してください!


リソースファイルの命名規則が正しいことを確認してください。@Masiは、クリーン後のエラーについて「コンソール」を調べるヒントに感謝します。これは私を助けました。
Bharath Booshan

10

クイックフィックス:

マニフェスト内のパッケージ名は/srcフォルダー内のものと同じである必要/genがあります。フォルダーパッケージは自動的に複製されます。

詳細な観察:

/genフォルダー内のパッケージの名前を確認します。私の場合、/srcフォルダ内のものとは異なりました。

マニフェストで参照されているパッケージは、/genフォルダーのパッケージでした。

/srcフォルダーの名前のパッケージをフォルダーに追加しようとし/genましたが、何が起こっているのかを確認しましたが、これで問題が解決しませんでした。次に、/srcフォルダーのパッケージ名と同じではないパッケージ名を削除しました。/srcフォルダーに対応しない名前のこのパッケージは、削除するとすぐに再作成されました。

マニフェスト内のパッケージ参照は、無意味に再作成されていて、/srcフォルダー内のパッケージと対応していないものに対応していたため、で名前を変更するように求められpackage = "oldPackage"ましたpackage = "srcFolderPackage"


9

同じ問題があり、ついに問題を見つけました。strings.xmlで<string name="app_name">program-name</string>、新しいAndroidプロジェクトを作成するときにデフォルトで存在する行を保持しませんでした。元々のプログラムであるHelloWordにしか使われていないと思いました。

ただし、AndroidManifest.xmlはこの値を参照するため、次のようになります。

=>コンパイルエラー。
=> R.javaは更新されません。
=> IDが認識されません...


string.xmlの行は「<string name = "app_name">プログラムの名前</ string>」です。申し訳ありませんが、投稿に問題がありました。
Glaux

9

Androidには、ビルドメカニズム用のSDKビルドツールADT 22が追加されています。次の手順を実行するだけです。

  1. Android SDKツールを更新する
  2. Android SDKプラットフォームツールを更新する
  3. Android SDKビルドツールを更新する
  4. ビルドツールのパスをパス変数に追加します。(パスまで----あなたのディレクトリ-パス\ android-sdk \ build-tools)

これで問題は解決します。


私の答えは質問に関連する唯一のものです。まだ3票しか投票できませんでした。奇妙な!
Mr.India 2013

8

R.javaが生成されない場合の解決策の1つは、「blabla.out.xml」という名前のレイアウトファイルを削除することです。

このファイルを削除した後、メニューのプロジェクト -> クリーンからプロジェクトをクリーンアップしてみてください。


7

あなたが持っている場合Glauxの答えの一般化として、任意の中にエラーがresあっても、あなたのクリーンと再構築-ディレクトリを、そしてR.javaが生成しないことがあります。最初にそれらのエラーを解決します。

例として、「myimage-2.jpg」などの画像ファイルを追加すると、ファイル名が英数字の値に制限されるため、システムはこれをエラーと見なします。ファイルを追加した後で「res」ディレクトリを更新し、コンソールウィンドウの出力でファイル名の警告を確認します。


丁度!これは、strings.xml内の文字列の名前を変更するとたまに起こります。これにより、レイアウトファイルにダングリングリファレンスが作成される可能性があります。そして、それはR.javaの生成を抑制します。残念ながら、XML IDをリファクタリングする方法はありません。
Scott Biggs

6

あなたのOSがUbuntuである場合、私はいくつかの提案を提供できます:

  1. ia32-libをインストールまたはアップグレードします。

    sudo apt-get upgrade ia32-libs
  2. aaptフォルダーに対する適切な権限があるかどうかを確認します。

    cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
    chmod 777 aapt
  3. Eclipseを起動します。

    sudo eclipse
  4. プロジェクトを実行-> Eclipseでクリーン


優れた。また、adbを機能させます。ubuntuを再インストールするときにこれをインストールする必要があることを思い出してください。
Yeung

Debian amd64にも同じ解決策が当てはまります
MarkusPeröbner、2013

この回答stackoverflow.com/questions/19523502/…は、より新しい指示を提供します
。ia32

6

XMLファイル100%エラーがありますが、XML検証ではエラーは表示されません。これが、XMLファイルを最初に確認する必要がある理由です。


5

Eclipseの[ Problems]タブを確認すると、常に役に立ちます。私の場合、R.javaが生成されないようにする「アンドロイドがターゲット「android-8」を解決できない」エラーメッセージが表示されました。そこで、インポートしたターゲットdefault.propertiesファイルで使用していたターゲットに修正してから、Projects-> Clean and voilaでクリーンアップを実行しました。R.javaが自動的に生成されます!それが役に立てば幸い!


[問題]タブを指定していただきありがとうございます。私はアンドロイドと日食に新しいので、それを以前に使用したことがなく、イライラしていました。このエラーが発生したときに最初に確認する場所です。
マーディンシュ

4

プロジェクトをクリーンアップし、Eclipseを閉じて再度開き、プロジェクトを起動すると、最終的にR.javaが再表示されます...


私も、再起動しなければならなかった、... EclipseはAAPTを逃す文句を言ったが、それは存在していた
フィリッポ・マッツァ


4

resフォルダーにエラーがある場合、R.javaは生成されません。たとえば、ドローアブルサブフォルダーには、同じ名前の2つのファイルがあり、1つはicon.pngで、もう1つはicon.htmlです。

Eclipseコンソールのログウィンドウに、「リソースエントリアイコンがすでに定義されています」というエラーが表示されます。icon.htmlを削除した後、genフォルダーをクリーンアップするか、単に削除することができます。R.javaが作成されていることがわかります。


4

私がいることを発見した任意の持つファイル大文字の中にresフォルダがこのエラーを作成します。これは私が追加して忘れたPNGファイルで起こりました。


3

多くの投稿とYouTubeビデオを読んだ後、私たちはそれぞれR.java異なる理由で行方不明になっていることがわかりました。

Eclipseでこれを修正する方法は次のとおりです。

  • genフォルダーにR.javaを手動で作成して保存します。
  • その後、プロジェクトに行き、「クリーン」をクリックします

次のメッセージが表示され、ファイルが自動的に書き換えられます。

R.javaは手動で変更されました!生成されたバージョンに戻しています!


1
Anup ..私はそれをしました///しかし、私がそれを掃除したときに削除されるだけです...問題は私にとってまだ未解決です!
ejjyrex 2013年

3

私にとっては、v7 appcompatを2回リンクしていました。とにかく、Eclipseで、パッケージエクスプローラーまたはナビゲーターでプロジェクト名を右クリックし、[プロパティ]、[Android]に移動し、[ライブラリ]セクションで重複をオフにします。ビルド->後でクリーンアップが必要になる場合があります。


2

明らかにこれに対する最終的な答えは1つありませんが、ここにはまだここに表示されていない別の答えがあります。

私が持っていたR.javaチームの同期を(しよう)した後に消え、そして紛争解決のファイルは、プロジェクト(すなわち、中にあったthingy.xml.minethingy.xml.r35など)。それらを削除するか、再生成された競合を解決しRます。


2

私はこの問題を抱えていました。誤って削除しました

xmlns:tools="http://schemas.android.com/tools"

XMLファイルとJavaファイルで、プロジェクト全体でビルドエラーが発生し始めました。削除したものを再入力するとすぐに再び機能しました:)


2

わかりましたので、この問題には多くの原因が考えられます。64ビットのLinuxマシンを使用していて、ADTを初めてセットアップする場合、Rが自動的に生成されないというこの問題が発生する可能性があります。コンソールタブを確認すると、次のようなエラーが表示されることがあります。

 'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb'

その場合は、ia32-libsをインストールする必要があります。

 sudo apt-get install ia32-libs

詳細はこちらをご覧ください:Android adb not found


2

私はこの問題に数回遭遇しました。アプリケーションの名前を使用してパッケージRをインポートしなかった場合、たとえば、アプリケーションにパッケージ名example.testが含まれている場合、いずれかにアクセスするためにexample.test.Rをインポートする必要があることがわかりました。リソース。

これがインポートされなかった場合、返されるのはデフォルトのリソースで、自分のリソースは含まれていません。

それでも、デフォルトのリソースのリストしか取得していないことがわかった場合は、android.Rではなくapplication_package_name.Rをインポートしていることを確認してください。


2

私の問題は、それappcompatが私のプロジェクトと同じディレクトリにないことでした。

Antでアプリをコンパイルしたときにこれがわかりました。


1

また、ADTプラグインの最新バージョンがあることを確認し、Android SDKマネージャーを開いて、すべてのSDKツールを最新バージョンに更新します。Eclipse自体の更新も確認してください。一致しないバージョンが原因で問題が発生しました。


1

私の問題はメニューファイルの中にありました。内部に存在しない文字列がstrings.xmlメニューファイルで参照されている場合、コンパイラは警告を表示しないようです。あなたのかどうかをチェックしitem、メニューのXMLファイル内のSはあなたの中に存在しない任意の文字列を参照しますstrings.xml。通常はandroid:title


1

私にとって、このエラーは、で既存のものres/menuを作成する代わりに既存のものを複製しようとしたときに発生しましたwizard


1

Mavenを使用する場合、これらすべての回答は機能しません。私のための解決策は追加することでした

<genDirectory>${project.basedir}/gen</genDirectory>

android-maven-pluginの設定セクションに。


1

R.classが再度作成した後、EclipseによってR.classが作成されない理由を見つけました-2クリーン、ビルドなど。

問題は、strings.xmlにあります。

<string name="hello">Hello World, HelloAutoComplete!</string>

<string name="app_name">HelloAutoComplete</string>

これらは、プロジェクトの作成時にEclipseによってデフォルトで作成されます。

確かに、独自の要件に合わせてstrings.xmlを変更しています。時々あなたはあなたのコードからこれらの2行をstring.xmlsをクリアします:

AndroidManifest.xmlファイルで問題が発生しています:

<application android:icon="@drawable/icon"  android:label="@string/app_name">
<activity android:name=".HelloAutoComplete" android:label="@string/app_name">

そのため、strings.xmlと通信できません。


1

レイアウトXMLファイルの名前を変更しましたが、後でXMLファイル(この場合はウィジェットプロバイダー)の名前がまだ存在しない古いレイアウトXMLを参照しており、Rクラスの自動生成/修正を妨げていました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.