새로운 Android ActionBar 지원을위한 Theme.AppCompat.Light를 찾을 수 없음


354

며칠 전에 Google이 출시 한 새로운 ActionBar 지원 라이브러리 를 구현하려고합니다 . 과거 에는 리소스를 포함하는 방법 (ActionBarSherlock과 유사한 방법)에 대한 가이드를 사용하여 Google 개발자의 지원 라이브러리 설정 페이지 에 나열된 동일한 방법을 사용하여 문제없이 ActionBarSherlock을 성공적으로 구현 했습니다. 라이브러리 프로젝트도 내 자신의 프로젝트에 라이브러리로로드했습니다.

라이브러리가 정상적으로로드되고 있음을 알 수 있습니다. 내 MainActivity.java에서 Activity를 확장하는 대신 ActionBarActivity를 확장하도록 (Google의 지시에 따라) 오류가 발생하지 않고 올바르게 가져옵니다.

나는 심지어 style.xml 파일을 우회 추가하는 시도 @style/Theme.AppCompat.Light모두에 대해 AndroidManifest.xml에에 직접 <application><activity>함께 android:theme="@style/ThemeAppCompat.Light"동일한 오류의 결과로 모든 시도와 함께.

이제 문제는 테마를 변경하여 오류를 발생시키지 않고 빌드조차 할 수 없다는 것입니다. 아래는 내가받는 오류와 새 테마를 사용하기 위해 변경 한 style.xml 파일입니다.

Android 앱을 사용한 경험이 있으며 API 18 (Android 4.3)로 컴파일하는 최신 버전의 지원 라이브러리 및 SDK로 Eclipse를 실행하고 있습니다.

빌드 중 수신 된 오류

오류 : 항목의 상위 검색 오류 : 주어진 이름 '@ style / Theme.AppCompat.Light'와 일치하는 자원을 찾을 수 없습니다. styles.xml / ActBarTest / res / values ​​라인 3 Android AAPT 문제

style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="Theme.ProsoftStudio.ACTest" parent="@style/Theme.AppCompat.Light">
    </style>
</resources>

어떤 제안? 이것은 ActionBarSherlock에서 결코 문제가되지 않았습니다. 이 새로운 지원 라이브러리를 사용하고 싶습니다. .jar 이로 드되는 것처럼 보이지만 리소스는 아닙니다.


1
프로젝트를
정리해보십시오.

2
@ TheWizKid95 구현하려는 라이브러리와 라이브러리를 정리했습니다. 어느 쪽도 Eclipse에 따라 코드가 변경되지 않았으며 문제를 해결하지 못했습니다.
Brandon Enriquez

리소스가 포함 된 지원 라이브러리를 추가 했습니까? libs에 jar를 추가하는 것만으로는 충분하지 않습니다.
Gabriele Mariotti

@GabrieleMariotti 예, Google이 지시 한대로 프로젝트 라이브러리뿐만 아니라 리소스도 추가했습니다.
Brandon Enriquez

나를 위해 일한 것은 작업 공간에 프로젝트로 추가하는 것이 었습니다. 단지 항아리를 가져 와서 buildpath에 추가하는 것이 효과가 없었습니다.
Johan

답변:


386

다음에해야합니다 :

  1. File->Import (android-sdk\extras\android\support\v7). "AppCompat"를 선택하십시오
  2. Project-> properties->Android. 섹션 라이브러리 "추가"에서 "AppCompat"를 선택하십시오.
  3. 그게 다야!

참고 : 메뉴 항목에서 "android : showAsAction"을 사용하는 경우 http://developer.android.com/guide/topics/ui/actionbar.html 예제와 같이 접두사 android를 변경해야합니다.


65
이것은 나를 위해 작동하지 않습니다. 나는 여기에 쓰여진 것을 정확하게 수행하지만 주어진 이름 오류와 일치하는 수백 개의 No Resource found로 끝납니다. 누락 된 리소스는 API 11 이상에서 포함 된 스타일이지만 API 7에서 작동해야합니다. 내가 누락 된 연결이 있습니까?!
apocalypz

5
비슷한 문제가 발생하면 Theme.AppCompat.Light.NoActionBar 테마가 appcompat 라이브러리에 없습니다.
JMRboosties

9
파일 가져 오기에서 'android-sdk'를 찾을 수 없습니다. 나는 'andoird'만 보인다. 누군가?
shahar eldad

2
apocalypz, 리소스없이 라이브러리를 가져 왔기 때문에 리소스가 누락되었다고 생각합니다. 다음은 "리소스로 라이브러리 추가"링크입니다. developer.android.com/tools/support-library/…
Hades200621

1
위의 단계 + sdk \ extras \ android \ support \ v13android-support-v13.jar를 프로젝트의 libs 디렉토리에 추가하면 문제가 해결됩니다.
Wasim A.

119

나처럼 http://developer.android.com/training/basics/actionbar/setting-up.html 의 Android 자습서를 따르고이 오류가 계속 발생하면 AppBaseTheme모든 styles.xml파일 에서 스타일 을 변경하십시오 . 상세히:

  1. 파일 res/values/styles.xml에서 줄을 변경하십시오.

    <style name="AppBaseTheme" parent="android:Theme.Light">

    에:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  2. 파일 res/values-v11/styles.xml에서 줄을 변경하십시오.

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">

    에:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">
  3. 파일 res/values-v14/styles.xml에서 줄을 변경하십시오.

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">

    에:

    <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

이제 응용 프로그램이 제대로 실행됩니다.


11
예, 이것은 나를 위해 일했습니다. 주목할 점은 부모 속성 인 "android :"접두어에 테마 (스타일)가 내장되어 있지만이 접두어가없는 값은 자신의 스타일 또는 링크 한 라이브러리의 스타일 (예 : android-support)을 참조한다는 것입니다. -v7-appcompat.
John Bentley

res/values/styles.xml새로운 안드로이드 프로젝트 는 없습니다 . 적어도 당신이 그것을 만들 때 아닙니다 android create project.
weberc2

마법사를 사용하여 프로젝트를 만들 때 전체 화면 앱을 선택하고 컨트롤을 숨기면 styles.xml이 나타납니다.
JJ_Coder4Hire

8
4 시간은 이미 낭비되었습니다. 주어진 이름과 일치하는 리소스를 찾을 수 없습니다 ( 'theme'에서 '@ style / Theme.AppCompat.Light'값 사용). 포기 하려다
c.fogelklou

2
방금 다른 방식으로 변경했으며 실제로 프로젝트에서 상황이 바뀌어야했습니다.
John

28

프로젝트 구조 모듈을 수정하면 Android Studio에서 발생할 수있는 문제입니다. 이 경우 종속성을 다시 추가해야 할 수도 있습니다. 텍스트 편집기에서 'build.gradle'파일을 편집하여 필요한 종속성을 포함하십시오.

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

lib 구성 요소로 '{your_project_name} .iml'파일을 업데이트해야합니다.

<orderEntry type="library" exported="" name="appcompat-v7-19.0.1" level="project" />

1
2 개의 * .iml 파일이 있음을 명심하십시오. 라이브러리 항목이있는 항목은 프로젝트의 하위 폴더에 포함되며 소문자 파일 이름을 갖습니다.
David Douglas

2
이것은 내 문제를 해결했습니다. 내부 build.gradle의 종속성에 appcompat를 추가하면 효과가 있습니다. 나는 다른 프로젝트와 일치하도록 수동으로 편집했다고 말한 것을 후회합니다!
JJ_Coder4Hire

28

이 문제에 대한 경험을 공유하겠습니다. 이 때문에 미쳐 가고 있었지만 문제는 내 코드가 아닌 이클립스 자체의 버그라는 것을 알았습니다 . 일식에서는 다른 안드로이드 프로젝트에서 안드로이드 라이브러리 프로젝트를 참조 할 수 없습니다

따라서 C : 드라이브에 Android 지원 라이브러리가 있고 컴퓨터의 D : 드라이브에 프로젝트가있는 경우 Eclipse가 제대로 작동하지 않고 Android 지원 라이브러리가 어디에 있는지 알 수 없습니다 (녹색 틱이 적십자로 바 turns) ). 이를 해결하려면 두 프로젝트를 동일한 하드 드라이브로 이동해야합니다.


4
감사합니다. 그것은 내 상황의 경우입니다. 1 단계 (파일-> 가져 오기 (android-sdk \ extras \ android \ support \ v7)에서 "appcompat"선택) "복사본에 복사"를 확인해야합니다.
Hong

나는 비슷한 문제에 직면했다. 고마워요, 정말 까다로 웠습니다
SILINIK

AndroidStudio에서도 동일한 문제가 있습니다. 나는 이것을 알아 내려고 3 시간을 보냈다. 감사!
Ruben Martinez Jr.

up. IntellJ는 적어도 AppCompat 에서이 문제에 대해 4 시간을 낭비했습니다.
puelo

이것은 나에게도 해결책이었습니다. appcompat_v7 프로젝트를 대상 프로젝트와 동일한 드라이브에 복사하고 lib로 추가하면 문제없이 작동했습니다.
MayaPosch 2016 년

23

Eclipse에서 Android Support Library ( APL ) 프로젝트 및 Main Project ( MP )를 사용하여 다음을 수행했습니다.

  1. 보장 모두 APLMP는 동일했다 minSdkVersiontargetSdkVersion.

  2. MP 의 빌드 종속성으로 APL 을 추가했습니다 .

    1. MP의 "속성> Java 빌드 경로"로 이동 한 다음

    2. 은 "프로젝트"탭을 선택하고 추가 APL을 .

  3. MP 의 속성 에서 "Android" 아래 라이브러리 아래 APL 에 대한 참조를 추가했습니다 .

1과 2는하지만 난 여전히에서 오류보고 ... 잘 작동 자바 클래스에 대한 참조를 가지고 manifest.xml위한 MP를 참조 할 때 @style/Theme.AppCompat.Light부터 APL . 이것은 3 단계를 수행했을 때만 사라졌습니다.


9
"@android : style / Theme.AppCompat ..."대신 "@ style / Theme.AppCompat ..."을 사용하십시오. 이 답변에서 # 3을 더하면 내 문제가 해결되었습니다.
BeccaP

포인트 2가 올바르지 않은 것 같습니다. : 설명 및 여기에 고정으로 그것은 빌드 오류 로그 메시지로 연결 stackoverflow.com/questions/18421274/...
월드

18

조금 늦었지만 여기 AndroidStudio에서 어떻게 처리합니까!

앱을 마우스 오른쪽 버튼으로 클릭하여 속성으로 이동 앱을 마우스 오른쪽 버튼으로 클릭하여 속성으로 이동

종속성으로 이동하여 '+'부호를 클릭하고 라이브러리 종속성을 종속성으로 이동하여 '+'부호를 클릭하고 라이브러리 종속성을 선택하십시오. 선택하십시오. appcompat-v7을 선택하십시오. appcompat-v7 선택


12

IntelliJ IDEA 솔루션.

1. Android SDK Manager를 실행 하고 최신 SDKAndroid Support Libarary를 설치하십시오 . SDK와 Android Support Libarary의 버전이 동일 해야합니다 ! 제 경우에는 23입니다. 또 다른 변종이 오류를 발생시킵니다. 2. IDEA 프로젝트의 SDK 버전을 이전 단계에서 설치 한 마지막 버전으로 변경하십시오. (ps. Maven을 사용할 수 없습니다).
여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

3. 기존 소스에서 새 모듈을 IDEA 프로젝트에 추가하십시오.
여기에 이미지 설명을 입력하십시오

4. AppCompat 프로젝트를 추가하십시오. !!! 마지막 SDK 아래에 있어야합니다! (ps.이 단계에서 "예"라고 말하십시오)
여기에 이미지 설명을 입력하십시오

5. 기본 프로젝트 모듈의 설정을 열고 다음 3 가지 종속 항목에 추가하십시오.

5.1. 모듈 의존성. 선택 안드로이드 지원-V7-APPCOMPAT을
여기에 이미지 설명을 입력하십시오

5.2. 2 개 라이브러리 종속성. 추가 안드로이드 SDK \ 엑스트라 \ 안드로이드 \ 지원 \ V7 \ APPCOMPAT \ libs와 \ 안드로이드 지원-v4.jar안드로이드 지원-V4 \ 안드로이드 지원-V7-appcompat.jar을
여기에 이미지 설명을 입력하십시오

전체적으로 다음과 같습니다.
여기에 이미지 설명을 입력하십시오

6. 매우 중요합니다 !!! 접두사가 @style 인
테마 추가하십시오 (다른 것은 아님!) .
여기에 이미지 설명을 입력하십시오



안드로이드 스튜디오 솔루션.

1. Android SDK Manager를 실행 하고 최신 SDKAndroid Support Libarary를 설치하십시오 . SDK와 Android Support Libarary의 버전이 동일 해야합니다 ! 제 경우에는 23입니다. 또 다른 변종이 오류를 발생시킵니다.
여기에 이미지 설명을 입력하십시오

2. build.gradle 옆에 추가

dependencies {
    compile 'com.android.support:appcompat-v7:23.0.1'
} 

PS Android 개발에 익숙하지 않다면 지금 Android Studio & Gradle로 이동하는 것이 좋습니다. 가장 간단한 방법으로 Android 앱을 관리 할 수 ​​있습니다.


우수 답변은 내가 지금까지 안드로이드에 대한 SO에서 발견 한
알렉스 졸릭

10

Android Studio 1.2.2의 경우

parent속성 값 에서 "android"를 삭제하십시오 .

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>

7

참조 $ ANDROID_SDK / extras / android / support / v7 / appcompat가 필요합니다


정확하게 참조하는 방법에 대해 자세히 설명 하시겠습니까? 안드로이드 개발자에 대한 지침으로 이미 해당 폴더를 참조했습니다. 그들의 웹 사이트에 명시된대로 정확하게 지시를 따랐습니다. ActionBarActivity가 오류없이 확장되기 때문에 적어도 부분적으로 참조되고 있음을 알 수 있습니다.
Brandon Enriquez

3
appcompat안드로이드 라이브러리라고 언급 하면, 주요 프로젝트 리소스는 appcompat
Crossle Song

그 트릭을했다. 이전에 Java 빌드 경로 내에서 수행했습니다.
Brandon Enriquez

5

IntelliJ IDEA 또는 Android Studio의 경우 :

이것을 app.gradle 빌드 파일에 추가하십시오

dependencies {
    compile "com.android.support:appcompat-v7:21.0.+"
} 

교체 -v:xx.0+는 19 플랫폼이있는 경우 다음 같이해야, 빌드 목표 :

dependencies {
    compile "com.android.support:appcompat-v7:19.0.+"
}

3

@rcdmk의 단계를 따르십시오. 프로젝트에서 android support v4.jar을 삭제하십시오. appcompat에있는 새로운 업데이트 버전과 충돌합니다.


3

나는 같은 문제가 있었고 해결책을 위해 4-5 시간을 낭비했습니다. 내 문제는 해결되었습니다.

  1. SDK 관리자에서 "Android 지원 라이브러리"및 "Android 지원 리포지토리"패키지를 삭제하십시오.
  2. "Android 지원 라이브러리"및 "Android 지원 리포지토리"를 다시 설치하십시오.
  3. "android-support-v7-appcompat"또는 "appcompat_v7을 프로젝트에있는 다른 것을 제거하십시오.
  4. "adt-bundle-windows-x86_64-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat"에서 android-support-v7-appcompat 가져 오기
  5. 프로젝트를 선택하고 파일에서 속성을 선택하고 Java 빌드 경로를 찾은 다음 "프로젝트"탭에서 다른 것을 삭제 한 다음 추가를 선택하십시오. "android-support-v7-appcompat"가 표시되면이를 선택하여 프로젝트 탭에 추가해야합니다.
  6. 프로젝트 파일 아래의 project.properties 파일을 확인하면 다음과 같습니다. target = android-21 android.library.reference.1 = .. / android-support-v7-appcompat 그런 다음 target이 21인지 또는 다른 항목인지 AndroidManifest.xml 파일을 확인하십시오. 또한 이전에 선택한 라이브러리와 동일한 라이브러리 참조를 확인하십시오.

솔루션을 찾을 수 있기를 바랍니다.


1
SDK 관리자를 사용하여 Android 지원 라이브러리를 업그레이드하고 작업 영역에서 이전 appcompat 라이브러리를 삭제하고 새로 업데이트 된 appcompat 라이브러리를 다시 가져 와서 작업 영역으로 복사 한 다음 빌드하는 데 도움이되었습니다.
Varun

3

다음 단계에 따라 문제가 해결됩니다.

  1. 파일-> 가져 오기 (android-sdk \ extras \ android \ support \ v7 \ appcompat)
  2. 프로젝트-> 속성-> Android를 마우스 오른쪽 버튼으로 클릭하십시오. 라이브러리 "추가"섹션에서 1 단계에 포함 된 라이브러리 appcompat를 선택하십시오.
  3. 프로젝트의 libs 디렉토리에서 모든 파일 삭제
  4. 프로젝트의 libs 디렉토리에 다음 파일 추가 <SDK-PATH>\extras\android\support\v13android-support-v13.jar

    필요한 경우 Eclipse를 다시 시작하십시오. 그게 다야. 문제가 사라져야합니다.


누군가를 도와
줘서

2

공장:

<style name="MyApp" parent="Theme.AppCompat.Light">
</style>
<style name="MyApp" parent="@style/Theme.AppCompat.Light">
</style>
<style name="Theme.AppCompat.Light.MyApp">
</style>

2

Android Studio 1.0.1에서 Import dialouge가 다르기 때문에 Svyatoslav Lobachs 버전을 사용할 수 없습니다.

대신 SDK 관리자에서 "Android Support Repository"를 다운로드했습니다. 그런 다음 추가

dependencies {
...
compile "com.android.support:appcompat-v7:18.0.+"
}

build.gradle. 나를 위해 일했다.



1

프로젝트를 마우스 오른쪽 버튼으로 클릭하고 관련없는 프로젝트 닫기를 선택한 후 OP와 동일한 문제가 발생했습니다 .

필자의 경우 appcompat_v7 프로젝트 를 다시 열고 두 프로젝트를 정리 / 재 구축 하여 문제를 해결 했습니다.


1

2015 년 1 월 14 일 HelloWorld와 같은 프로젝트에서 Eclipse (Luna) / AndroidSDK (Android Stduio가 아님)를 최신 도구 및 라이브러리와 함께 사용했을 때 나에게 일어났다. 해당 도구를 설치하고 HelloWorld를 첫 번째 앱으로 만들었을 때 모든 기본값을 그대로 사용했습니다. - 이건 내 문제입니다.

먼저 "Android 지원 라이브러리"라이브러리가 설치되어 있는지 확인하십시오. 그렇지 않은 경우 설치하십시오. 기본적으로 설치되지 않습니다. 메뉴의 "Android SDK 관리자"에서 모든 작업을 수행 할 수 있습니다.

(Android SDK 관리자-> 추가-> Android 지원 라이브러리)

축복, (채무자) <> <


1

가장 빠른 솔루션 :

프로젝트-> Android 도구-> 지원 라이브러리 추가를 마우스 오른쪽 버튼으로 클릭하십시오.

여기에 이미지 설명을 입력하십시오


0

나는 이것에 대해 정말 바보 같은 실수를했다. 매번 같은 오류가 발생했을 때 무엇이 ​​잘못되었는지 알 수 없었습니다. 그런 다음 작업 공간의 모든 프로젝트를 닫으면 모든 문제가 시작된 이후의 시간이라는 메시지가 표시됩니다. 따라서 "appcompat_v7"이 닫히지 않았는지 확인하십시오. 그런 다음 두 번 클릭하여 프로젝트를 연 다음 프로젝트를 정리하고 다시 빌드하십시오. 제 경우에는 오류가 사라졌습니다. 행복한 코딩!


0

이 질문이 게시 될 때 v13 지원 라이브러리를 사용할 수 있는지 확실하지 않지만 누군가 여전히 어려움을 겪고있는 경우 추가 android-support-v13.jar하면 모든 것이 수정 될 것입니다. 이것이 내가 한 방법입니다.

  1. 프로젝트-> 속성을 ​​마우스 오른쪽 버튼으로 클릭하십시오.
  2. 왼쪽 목차에서 Java 빌드 경로를 선택하십시오.
  3. 라이브러리 탭으로 이동
  4. 외부 항아리 추가 버튼을 선택하고 <your sdk path>\extras\android\support\v13\android-support-v13.jar

0

Android Studio 또는 IntelliJ의 경우 gradle.build에서 종속성을 업데이트하기 만하면됩니다. 나는 다음을 사용했다.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}

0

얼마나 많은 당신이 이것을 알아 차 렸는지 모르겠다. 지원 라이브러리 "appcompat_v7"과 프로젝트는 동일한 디렉토리에 있어야합니다 (작업 공간 디렉토리를 의미 함). 오류가 없을 때까지 프로젝트를 청소하지 마십시오. 그렇지 않으면 R.java로 힘든 시간을 보낼 것입니다


0

어떤 이름 으로든 새 프로젝트를 만든 다음 프로그램을 새로 만드는 appcompat_v7을 사용하는 것이 좋습니다.

Right Click Project-> properties->Android

섹션 라이브러리에서 Add라이브러리 appcompat를 선택하십시오.


0

이클립스에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드 경로를 선택한 다음 빌드 경로 구성을 선택하십시오. 창에서 원하는 jar 파일을 선택하고 프로젝트를 새로 고치십시오.


0

받아 들여진 해결책은 한 번만 나를 위해 일했지만 지금은 아닙니다. 나는, 새로운 작업 공간에서 같은 종류의 (!)의 안녕하세요 세계를 다시 작성했다가 컴파일 만든 다음을 포함한 모든 디렉토리를 복사 .hg하고 .hgignore. hg diff보여줍니다 :

-        android:targetSdkVersion="19" />
+        android:targetSdkVersion="21" />

Binary file libs/android-support-v4.jar has changed

Eclipse가 API 21을 컴파일하려고하고 API 19로 아무것도하지 않는 것 같습니다.


0

appCompat Library를 추가 하고 SDK 위치에서 appCompat에 대한 적절한 참조를 제공 한 경우 "캐시 무효화 / 다시 시작"을 시도 하십시오 . Android Studio의 "파일" 메뉴에서
찾을 수 있습니다 .


0

필자의 경우 필요한 라이브러리가 포함되지 않은 SDK를 사용하려고했기 때문에 문제가 발생했습니다. 내가 분을 늘 렸을 때. SDK 수준에서 문제가 사라졌습니다. 물론 라이브러리 자체를 직접 포함하면 오류도 제거해야합니다.


0

다 잊어 버려. Android Studio를 사용하여 다운로드 한 appcompat 라이브러리를 사용하십시오. 누락 된 정의가 모두 있습니다. Eclipse에서 사용하는지 여부에 관계없이.


0

나는 같은 문제가 있었고 대답에서 언급 한 jar / 라이브러리를 가져 오거나 추가 한 후에도 오류를 해결하지 못합니다. 좌절감으로 방금 새 작업 공간을 만들고 새로운 안드로이드 프로젝트를 만들었고 appcompat_v7을 자동으로 가져 왔으며 정리 및 빌드에 오류가 없었습니다. 단일 jar / 라이브러리를 수동으로 가져올 필요가 없습니다. 참고로 Eclipse Mars.1 Release (4.5.1)를 사용하고 있으며 새 Android 프로젝트를 만들 때마다 동일한 문제가 발생했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.