Eclipse에서 Android 용 개발 : R.java가 재생성되지 않음


309

내 R.java가 업데이트되지 않았으므로 새 리소스에 대한 정보가 포함되어 있지 않으므로 삭제하기로 결정하고 Eclipse가 새 리소스를 생성한다고 생각했습니다. 그러나 그 일은 일어나지 않았으며 지금은 R.java가 없습니다. 어떻게 재생성 할 수 있습니까?

Windows 7을 사용하고 있습니다.

" 프로젝트 수행 -> 정리 는 문제를 일으킨 원인입니다. 정리는 R.java를 삭제합니다. 어떤 이유로 든 플러그인이 파일을 재생성하지 않습니다."


청소할 때 솔루션이 작동하지 않습니다. SDK 관리자에서 빌드 도구를 다운로드 한 다음 시스템을 다시 시작해야했습니다. ADT 22.3.0이 있습니다.
Moradnejad

답변:


177

이 사이트 는 다음을 제안합니다.

프로젝트에서 정리를 실행하면 생성 된 모든 Java 파일, 즉 R을 다시 생성해야합니다.

...과...

Eclipse의 프로젝트 메뉴 아래에는 옵션 빌드가 자동으로 있습니다. 수정 될 때마다 R.java 파일을 빌드하는 데 도움이됩니다. 정리 ... 옵션도 프로젝트 아래에 있습니다.

이 사이트 는 다른 솔루션을 제안합니다.


1
누가 생각했을지, 감사합니다. +1 여기에 레이아웃에 문제가있어서 R.Java가 생성되지 않았습니다. 좋은 머리! 건배.

101
Project-> Clean을 수행하면 문제가 발생합니다. 클리닝은 R.java를 삭제합니다. 어떤 이유로 든 플러그인이 파일을 재생성하지 않습니다.
Cerin

7
설치 한 것과 다른 Android 지원 API 버전이 필요한 라이브러리에 연결했을 때이 팝업이 나타났습니다. 종속성이 작동하지 않아 R이 생성되지 않았습니다. 다른 사람들이 말했듯이 오류 로그에 표시되므로 확인하십시오.
mikebabcock

1
필자의 경우 프로젝트를 정리하면 재생성하는 대신가 제거 R.java 됩니다. stackoverflow.com/questions/13065425/…
RobinJ

96
res 디렉토리에 오류가 있으면 R.java가 재생성되지 않습니다. 오류 제거-> 내 경우 문제 해결 :)
JavaRunner

300

레이아웃이 깨져서 모든 일이 터지는 것을 발견했습니다. 긴장을 푸십시오. 세미콜론 하나를 잊어 버리고 100 개의 오류를 생성하는 프로그래밍 C를 처음 배웠을 때의 오래된 실수와 같습니다. 많은 공황 상태에서 모든 버튼을 누르면 상황이 악화됩니다.

해결책

  • 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 관리자-> 도구-> Android SDK 빌드 도구
  • 를 업데이트 할 때 및 Android SDK Tools도 업데이트해야합니다 . 일치하지 않으면 빌드가 자동으로 실패합니다.Android SDK Platform-toolsAndroid ADK Build-tools
  • 문제를 찾을 수 없으면 / gen /-> 로컬 히스토리에서 복원 ...을 마우스 오른쪽 단추로 클릭하십시오.-> tick R.java-> 복원을 클릭하십시오 . 문제가 해결되지 않더라도 문제를 쉽게 찾을 수 있도록 추가 오류를 해결합니다.

21
이것이 최고의 답변이되어야합니다!
john.k.doe

6
실제로, 환경에 여전히 도구 업데이트가 필요하다는 것을 깨달았습니다.
woodleg.as

11
창 -> 안드로이드 SDK 관리자 -> 도구 -> 안드로이드 SDK이 나를 위해 솔루션을 빌드 - 도구, upvoted

1
나는 수십 개의 답변을 읽었으며 SDK Build-tools를 확인하는 것에 대해서만 언급했습니다. 나는 맹목적으로 이클립스가 모든 안드로이드 툴링을 다운로드하고 설치하도록 제안했다. 그것은 그 부분을 완전히 놓쳤다.
Justin Aquadro

1
콘솔을 확인하고 수정해야하는 자세한 오류를 표시 한 다음 빌드 할 수 있습니다. 이것은 내 경우에 도움이되었다
david72

40

나는 같은 문제가 있었다. 체크 아웃했을 때 레이아웃 아래의 XML 리소스 이름에 올바른 이름 지정 규칙이 없음을 발견했습니다. 대문자가있었습니다. 그래서 모든 문자를 소문자로 만들고 마법이 작동하도록 이름을 바꿨습니다.


2
tnx ... 내 레이아웃 이름에 대문자를 사용할 수 있다고 생각합니다
Kevin

나도 나를 위해 일했다 : 콘솔은 이것을보고 : [2010-09-22 16:19:40-myproject] res \ drawable-ldpi \ downloadNow.png : 잘못된 파일 이름 : [a-z0-9_.] 만 포함해야합니다
sami

1
고마워, 이것은 내 문제였다. 레이아웃 폴더에 대문자가있는 .xml 파일이 있었고 전체 R.java 파일이 누락되었거나 파일로 인해 생성되지 않았습니다. 이를 알 수있는 유일한 방법은 명명 규칙이 자본을 허용하지 않았다는 것을 인식하는 것입니다. 오류가 발생하지 않았습니다.
Lemmings19

1
자원 파일 또는 속성의 이름을 지정할 때 Java에서 변수 이름을 지정하는 것처럼 이름을 지정하십시오. R.class는 자원, 즉 id, drawable, xml 파일 이름을 공개 정적 최종 상수 문제와 함께 넣습니다. 따라서 "-", "특수 문자"를 넣으면 해당 기호에 다른 산술 수단이있을 수 있으므로 R 생성이 중지됩니다.
IronBlossom

1
네, 이것은 저에게 문제였습니다. 내 res / xml의 파일이 존재하지 않는 레이아웃 파일을 참조했으며 분명히 R.java가 생성되지 않으므로 Clean을 실행하면 R.java가 누락되어 수백 가지 가져 오기 오류가 발생합니다. ...
Cerin

28

R.class가 갑자기 없어 질 수있는 한 가지 이유는 XML 파일에 오류가있을 때입니다. 예를 들어, 이름이 대문자 인 XML 파일을 myCoolLayout.xml과 같이 이름에 추가하면 허용되지 않습니다. 또는 기존 파일 등을 가리 키지 않는 참조가있는 경우


17

Eclipse에서 간단히 Project-> clean을 사용하여 프로젝트를 정리하십시오. R.java는 자동으로 (재) 생성됩니다.

어떤 이유로 작동 하지 않는 경우 : layout.xml 파일에 오류가 없는지 확인하십시오 . 이클립스는 약간 버그가있는 것처럼 보입니다. 때로는 XML이나 패키지 탐색기의 오류를 표시하지 않습니다. 이런 경우 : "clean"을 사용한 후 "console"또는 "problems"보기를보십시오. 모든 오류가 표시되어야합니다. 그것들을 수정하고 깨끗하게 다시 실행하십시오.

참고 : 누락 된 R 파일로 인해 발생하는 오류를 수정하지 않아도됩니다! XML 파일 및 기타 프로젝트 오류를 ​​수정하고 깨끗하게 사용하십시오!


자원 파일 이름 지정 규칙이 올바른지 확인하십시오. @ 세척 후 오류가 있는지 "콘솔"을 살펴 보는 것에 대해 감사합니다. 이것은 나를 도왔다.
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는 업데이트되지 않습니다.
=> 아이디가 인식되지 않습니다 ...


string.xml의 줄은 "<string name ="app_name "> 프로그램 이름 </ string>"입니다. 죄송합니다. 게시물에 문제가있었습니다.
Glaux

9

Android는 빌드 메커니즘을 위해 SDK 빌드 도구 ADT 22에 추가되었습니다. 다음 단계 만 수행하면됩니다.

  1. Android SDK 도구 업데이트
  2. Android SDK 플랫폼 도구 업데이트
  3. Android SDK 빌드 도구 업데이트
  4. 빌드 도구의 경로를 경로 변수에 추가하십시오. (경로 ---- DIRECTORY-PATH \ android-sdk \ build-tools)

문제가 해결됩니다.


내 대답은 질문과 관련된 유일한 것입니다. 여전히 3 표 밖에 얻지 못했습니다. 이상한!
Mr.India

8

R.java가 생성되지 않는 경우 해결책 중 하나는 "blabla.out.xml"이라는 레이아웃 파일을 삭제하는 것입니다.

이 파일을 삭제 한 후 메뉴 프로젝트 -> 정리 에서 프로젝트를 정리하십시오 .


7

당신이있는 경우 Glaux의 대답의 일반화로, 어떤 에 오류가 res같은 경우에도 청소를하고 다시 - 디렉토리를 다음 R.java는 발생하지 않을 수 있습니다. 해당 오류를 먼저 해결하십시오.

예를 들어 "myimage-2.jpg"와 같은 이미지 파일을 추가하면 파일 이름이 영숫자 값으로 제한되므로 시스템에서이를 오류로 간주합니다. 파일을 추가 한 후 'res'디렉토리를 새로 고치고 콘솔 창에서 파일 이름 경고에 대한 출력을보십시오.


바로 그거죠! 이것은 strings.xml에서 문자열의 이름을 바꿀 때 가끔씩 나에게 발생합니다. 레이아웃 파일에 매달려있는 참조를 만들 수 있습니다. 그리고 THAT는 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가 작동합니다. 우분투를 다시 설치할 때 이것을 설치해야한다는 것을 상기하십시오.
Yeung

Debian amd64의 경우도 마찬가지입니다.
Markus Peröbner

이 답변 stackoverflow.com/questions/19523502/… 더 신선한 지침을 제공합니다. ia32-libs는 Elementary
Singagirl

6

XML 파일에 100 % 오류가 있지만 XML 확인시 오류가 표시되지 않습니다. 이것이 XML 파일을 먼저 확인해야하는 이유입니다!


5

Eclipse 의 문제점 탭을 살펴보면 항상 도움이됩니다 . 제 경우 에는 R.java가 생성되지 않도록하는 " android가 대상 'android-8'을 (를) 확인할 수 없습니다 "오류 메시지가 표시되었습니다. 따라서 가져온 대상default.properties 파일 에서 사용중인 대상 으로 수정 한 다음 Projects-> Clean 및 voila를 통해 정리를 수행했습니다! R.java가 자동으로 생성됩니다! 그것이 도움이되기를 바랍니다!


문제 탭을 가리켜 주셔서 감사합니다. 나는 안드로이드와 이클립스에 익숙하지 않기 때문에 전에는 사용하지 않았고 좌절했다. 이 오류가 발생했을 때 가장 먼저 확인해야합니다.
Maadinsh

4

프로젝트를 정리하고 Eclipse를 닫은 후 다시 열고 프로젝트를 시작하면 마침내 R.java가 다시 나타납니다.


나는 또한 재부팅했다, ... Eclipse는 aapt에 누락에 대해 불평하지만 존재
필리포 MAZZA


4

res폴더에 오류가 있으면 R.java가 생성되지 않습니다 . 예를 들어 드로어 블 하위 폴더에는 이름이 같은 두 개의 파일이 있습니다. 하나는 icon.png이고 다른 하나는 icon.html입니다.

Eclipse 자원 로그 아이콘에 "자원 입력 아이콘이 이미 정의되어 있습니다"라는 오류가 표시됩니다. icon.html을 삭제 한 후 gen폴더를 정리하거나 삭제할 수 있습니다 . R.java가 생성되었음을 알 수 있습니다.


4

나는 것으로 나타났습니다 어떤 이 파일 대문자를res폴더가이 오류를 생성합니다. 이것은 내가 추가하고 잊어 버린 PNG 파일 로 나에게 일어났습니다 .


3

많은 게시물과 YouTube 동영상을 읽은 후 우리 각자가 R.java다른 이유로 누락 된 것을 발견했습니다 .

이클립스에서 이것을 고치는 방법은 다음과 같습니다.

  • gen폴더에 R.java를 수동으로 작성 하고 저장하십시오.
  • 그런 다음 Project로 이동하여 "Clean"을 클릭하십시오.

다음 메시지가 표시되고 파일이 자동으로 다시 작성됩니다.

R.java는 수동으로 수정되었습니다! 생성 된 버전으로 되돌리기!


1
Anup ..///하지만 제거했을 때만 제거해야합니다 ... 문제는 여전히 해결되지 않았습니다!
ejjyrex

3

나를 위해 v7 appcompat를 두 번 연결했습니다. 어쨌든 Eclipse의 패키지 탐색기 또는 네비게이터에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 특성, Android로 이동하여 라이브러리 섹션에서 중복을 선택 취소하십시오. 나중에 빌드-> 정리해야 할 수도 있습니다.


2

이에 대한 최종 답변은 분명히 없지만 여기에 아직 보지 않은 다른 답변이 있습니다.

내가 했어 R.java팀 동기화를 (시도) 후 사라와 분쟁 해결 파일은 프로젝트 (즉,에 있었다 thingy.xml.mine, thingy.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 파일의 파일이에없는 문자열을 참조 하는지 확인 하십시오 strings.xml. 보통 android:title.


1

나를 위해이 오류는으로 res/menu하나를 만드는 대신 기존 항목을 복제하려고 할 때 발생 했습니다 wizard.


1

Maven을 사용하면 이러한 모든 답변을 사용할 수 없습니다. 나를위한 해결책은 추가하는 것이 었습니다

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

android-maven-plugin의 구성 섹션으로 이동하십시오.


1

Eclipse를 다시 만든 후에 R.class가 R.class를 만들지 않는 솔루션을 찾았습니다 .2 청소, 빌드 등

문제는 여기 strings.xml에 있습니다.

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

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

이들은 기본적으로 프로젝트를 작성할 때 Eclipse에 의해 작성됩니다.

분명히 자신의 요구 사항에 맞게 strings.xml을 변경하고 있습니다. 때로는 코드에서 다음 두 줄의 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.