패키지 R이 없습니다.


114

나는 무서운 패키지 R가 존재하지 않는다는 것을 얻고 있는데 , 그것은 나를 죽이고 있습니다. 코드는 괜찮습니다. 코드를 실행하는 앱이 시장에 나와 있습니다.

이제 간단한 webview응용 프로그램에 영향을 미치고 있습니다. o.0

R.string.app_name내 오류 main.xml이고 string.xml괜찮습니다. 나는 너무 혼란스러워.

이전 버전을 "borrow"일부 코드로 다시 열었고 맨 위에 R. errors.가져 오기 R.android가 추가되는 것을 제외하고는 깨끗하고 아무것도 변경되지 않았습니다 .

Netbeans에로드 했는데도 같은 결과를 얻었습니다. 청소가 작동하지 않습니다. R.java직접 파일을 작성할 수 있습니까 ?

이게 뭐야 R? 아닙니다 R. 대응해야한다R.java


1
당신도 그들에 도서관 체크로 추가 일부 프로젝트가 있다면 체크 입술, 오류에 대한 폴더
써니 쿠마 아 디트

1
setContentView (R.layout ... 줄에서 Alt + Enter를 눌러 가져 오기를 추가합니다.
live-love

답변:


127

이 문제를 겪은 사람을 위해 네임 스페이스 폴더의 이름을 변경하여 리팩토링했습니다. AndroidManifest도 편집하는 것을 잊었 기 때문에이 오류가 발생했습니다.

이것도 확인하십시오.


1
내 활동 클래스 내에서만 R에 액세스 할 수있는 것 같습니다. 다른 클래스 파일에서 액세스하려고 시도하는 동안이 오류가 발생했습니다.
조 라플란드

84

간단하게하기 위해서 :

import your.app.package.R;

물론 your.app.package앱 패키지로 대체 합니다.

R 자원 참조를 사용하는 모든 클래스에서 제거 다른 import.R, 즉import android.R;


3
Cordova를 사용할 때 이것이 적절한 솔루션입니다. 코르도바 3.0.9으로 테스트
피터

1
사실, 내 실수. 이를 통해 Cordova 프로젝트를 올바르게 빌드 할 수 있지만 스플래시 화면은 여전히 ​​나타나지 않습니다. 따라서이 솔루션은 실제로 문제를 해결하지 못합니다.
피터

이것은 Eclipse 테스트 프로젝트를 Android Studio 모듈로 변환 할 때 수행해야하는 작업입니다.
RightHandedMonkey

phonegap을 사용하고 플러그인 파일 내에 위의 import 문을 추가하는 경우 플랫폼을 제거하고 다시 추가하십시오. 이와 같이 phonegap platform remove androidphonegap platform add android
파와

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는 시스템 리소스에서
    가져온 것입니다-> do not import android.R, 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 2012

12

Android 스튜디오에서 개발 중이고 패키지 이름을 리팩터링 한 경우 Android 매니페스트 및 앱 Gradle 파일에서 패키지 이름을 변경해야합니다.

 applicationId "change here your package name"

및 매니페스트 파일

 package="change here your package name"

네. 예를 들어 앱 이름의 대소 문자가 약간 다릅니다.
Steve White

9

R.java는 자동 생성 파일이며 xml 파일에 오류가있는 경우 일반적으로 컴파일되지 않습니다.

아니요 자신의 R.java 파일을 작성할 수 없으며 리소스 컴파일러에 의해 생성되어야합니다.

모든 xml 파일에서 오류를 확인하십시오.


1
어떤 종류의 오류가 있으며 초보자는이를 어떻게 발견해야합니까?
user1725145

6

R 클래스 는 XML 파일 (UI 레이아웃, 국제화 문자열 등)에서 자동 생성 된 Java 코드입니다. 이전에 코드가 작동 했었다면 (그렇게 보이는 것처럼) IDE에 이러한 파일을 어떻게 든 재생성하도록 지시해야합니다. :

  • IntelliJ에서 Tools> Android> Generate sources for <project>를 선택합니다.
  • (다른 IDE에서 방법을 알고 있다면이 답변을 자유롭게 편집하십시오!)

이것은 내가 검색 한 ans였습니다. 감사합니다 .. 한
두루 아드 히카리 Bishwash

5

예전에는 효과가 있었던 것 같은데 지금은 ..

MANIFEST 파일 내에서 PACKAGE 이름을 변경하면 발생할 수 있습니다.

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

패키지 이름을 변경하려면

  1. 매니페스트 파일에서 패키지 이름을 수동으로 변경합니다.
  2. R.java 클래스를 클릭하고 F6을 누르십시오. 클래스를 다른 패키지로 이동할 수 있으며 해당 클래스에 대한 모든 참조가 업데이트됩니다.

당신은 신입니다! 나는에서 내 프로젝트를 변경 한 com.example.rickydam.txtbookscom.txtbooks.txtbooks새로운 프로젝트를 만들어 나는 새로운 프로젝트를 통해 모든 이동하지만 R. I를 찾을 수 없습니다 SDK-도구를 Gradle을와 동기화, 캐시를 무효화 프로젝트를 청소 프로젝트를 재건, 다시 설치 시도 ... 아무것도 작동하지 않았습니다! 하지만 귀하의 솔루션이 내 문제를 해결했습니다! 다시 한 번 감사드립니다! 코딩을 계속하십시오!
Ricky Dam

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

import android.R 삭제; 모든 파일에서 .. 일단 프로젝트를 정리하고 프로젝트를 빌드하십시오 .... 그것은 생성됩니다


3

샘플 : 내 패키지는 com.example.mypc.f01입니다 . 오류를 수정하기 위해 활동에 아래 줄을 추가합니다.

import com.example.mypc.f01.R;


3

다음은이 오류를 제거하는 데 사용할 수있는 몇 가지 기술입니다.

  1. 프로젝트 정리, Buidl-> clean Project
  2. 프로젝트 다시 빌드, 빌드-> 프로젝트 다시 빌드
  3. 매니페스트를 열고 누락 된 리소스가 있는지 확인합니다.
  4. 특정 ID가 없으면 체크인 레이아웃 추가
  5. 위의 단계가 작동하지 않으면 캐시를 무효화하여 Android 스튜디오를 다시 시작하십시오.

2

제 경우에는 프로젝트에서 여러 패키지를 만들고 있다는 것을 깨달았습니다. Android Manifest 내에서 공급자 이름이 .provider.MyContentProvider 대신 MyContentProvider 값을 잘못 보유하고 있음을 발견했습니다. 내 기본 패키지 (UI 포함)는 co.companyname.database 대신 co.companyname.database.provider였습니다.

그런 다음 영향을받는 클래스의 import 문에서 마우스 오른쪽 버튼을 클릭하고 Android Studio (0.8.6)에 가져 오기 문을 최적화하도록 요청했습니다. 또한 IDE 오른쪽 상단의 AS 검색 표시 줄에서 .R을 검색하면 패키지의 일부인 자동 생성 R.java 파일을 찾을 수 있습니다. 이 시점에서 아무것도 변경할 필요가 없습니다. Android Manifest 파일을 수정하고 다시 빌드 한 후 Studio에서 프로젝트를 수정해야합니다.

한 가지 다른 항목은 한 클래스에서 toString (). length ()를 사용하여 문자열을 평가했지만 TextUtils.IsEmpty (stringVal); 문제를 해결하기 위해 내가 한 다른 일이 생각 나지 않습니다.

이것이 누군가를 돕기를 바랍니다.

NB-이 모든 것은 AS 0.8.6입니다.

추신

R.java는 자동 생성되므로 헤더를 읽으십시오. / * AUTO-GENERATED FILE. 수정하지 마십시오. * *이 클래스는 발견 된 리소스 데이터에서 * aapt 도구에 의해 자동으로 생성되었습니다. * 손으로 수정할 수 없습니다. * /


2

이를 경험했을 때 새 프로젝트를 만들고 이전 프로젝트의 파일을 새 프로젝트로 복사했습니다.

  1. 새 프로젝트 시작
  2. 이전 파일을 새 프로젝트에 추가 (Layout, 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 파일 중 하나에서 패키지를 업데이트하지 않았습니다.

이 오류 '패키지 R이 존재하지 않습니다'의 원인은 Java 또는 매니페스트 파일의 패키지 이름이 올바르지 않기 때문입니다. 정확하고 동기화되어 있는지 확인한 다음 깨끗한 빌드를 수행하십시오.


0

때로는 프로젝트를 Android Studio로 다시 가져 오면 해결됩니다.


0

잘못된 경로 : 프로젝트는 이미지에 대한 포인터를 "현금화"하고 경로에 이름을 변경 한 경우 (예 : Refactored 패키지 또는 폴더). 그런 다음 R 문자를 다시 작성하면 편집기가 올바른 경로를 제안하고 작동합니다. 이 경우 파일 이름이 정확하고 R. 포인터에서 참조되는 내용이 있지만 경로가 잘못되어 정리 및 빌드가 작동하지 않습니다.


0

R. 파손 의 또 다른 경우 는 Annotations Processing 입니다.

일부 처리는 특정 폴더 또는 폴더 수준에있는 클래스를 참조 할 수 있습니다. 필요한 클래스를 다른 위치로 이동 하면 알 수없는 클래스로 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.