appcompat-v7 : 21.0.0 ': 주어진 이름과 일치하는 리소스를 찾을 수 없습니다 : attr'android : actionModeShareDrawable '


376

내 프로젝트에서 최신 appcompat-v7 지원 라이브러리를 사용하려고하면 다음 오류가 발생합니다.

/Users/greg/dev/mobile/android_project/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0/res/values-v11/values.xml
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.
Error:(36, 21) No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

이 문제를 어떻게 해결합니까?


1
이 문제는 일식으로 나타납니다. SDK 빌드 도구가 rev 21로 업데이트되지 않았기 때문에 100 개가 넘는 오류가 발생했습니다. 지금 다른 오류가 발생했습니다.
RED_

오늘 Extras / Android 지원 라이브러리 (버전 21.0.2)를 제거하고 다시 설치했는데 해당 project.properties가 여전히 문제의 원인 인 target = android-19를 잘못 가리키고 있습니다. 21이어야하지만 수동으로 편집 할 수없는 파일입니다. 해결 방법은 허용되는 답변을 참조하십시오.
JulianSymes 12

@RED_, 안드로이드 스튜디오의 valules-v21에서 <style name = "AppBaseTheme"parent = "android : Theme.Material.Light"> </ style>에서 'android : Theme.Material.Light'기호를 확인할 수 없음
Pankaj Nimgade

@PankajNimgade 이해가 안 돼요 ... 도움이 필요하세요?
RED_

@RED_, 예 필사적으로 도움이 필요합니다. 내 컴퓨터에서 머티리얼 테마 또는 values-v21 \ styles에서 android로 시작하는 것을 감지 할 수 없습니다. 친절하게 도와주세요
Pankaj Nimgade

답변:


598

loeschg 의 대답 은 절대적으로 정확하지만 오류를 약간 다르게하더라도 모든 IDE (Eclipse, IntellJ 및 Android Studio)에 대한 솔루션을 제공하고 싶습니다 .


전제 조건

SDK-Manager를 통해 최신 버전 extras을 다운로드했는지 확인하십시오 Android 5.0 SDK.

SDK 관리자 그림


안드로이드 스튜디오

build.gradle앱 모듈 의 파일을 열고 compileSdkVersion21을 변경하십시오 . 기본적으로 targetSdkVersionSDK 버전을 21 로 변경할 필요는 없지만 항상 최신 Android Build-Version을 대상으로 해야하므로 권장 됩니다.
결국 gradle-file은 다음과 같습니다.

android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

나중에 프로젝트를 동기화하십시오.

Android Studio Gradle Sync 알림


사용하는 경우 v7-appcompat이클립스에서 당신은 라이브러리 프로젝트로 사용할 수 있습니다. * .jar을 /libs폴더로 복사하는 것만으로는 충분하지 않습니다 . 읽어 보시기 바랍니다 이 (클릭) 에 대한 단계별 튜토리얼 developer.android.com을 제대로 프로젝트를 가져 오는 방법을 알기 위해.

프로젝트를 가져 오면 /res다음과 같은 오류로 인해 폴더의 일부 폴더에 빨간색 밑줄이 표시됩니다.

이클립스의 오류

error: Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material'.
error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.*'
error: Error: No resource found that matches the given name: attr 'android:actionModeShareDrawable'.

해결책

project.properties파일 을 열고 android-support-v7-appcompat대상을에서 (으) target=android-19로 변경하면 됩니다 target=android-21.
그런 Project --> Clean...다음 변경 사항을 적용하려면 그냥 수행하십시오 .


IntelliJ IDEA (Gradle을 사용하지 않음)

이클립스와 비슷하지만 android-support-v7-appcompat.jar; 만 사용하는 것만으로는 충분하지 않습니다 . 를 appcompat모듈 로 가져와야합니다 . 이 StackO-Post 에서 자세한 내용을 확인하십시오 (클릭) .
( 참고 : 당신은 단지를 사용하는 경우 .jar당신이 얻을 것이다 NoClassDefFoundErrors런타임에 )

프로젝트를 만들려고 할 때 res/values-v**폴더에 문제가 있습니다. 메시지 창에 다음과 같은 내용이 표시됩니다.

Error:android-apt-compiler: [appcompat]  resource found that matches the given name: attr 'android:colorPrimary'.
Error:(75, -1) android-apt-compiler: [appcompat] C:\[Your Path]\sdk\extras\android\support\v7\appcompat\res\values-v21\styles_base.xml:75: error: Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.ActionButton'.
// and so on

해결책

appcompat모듈을 마우스 오른쪽 버튼으로 클릭 -> 모듈 설정 열기 (F4)-> [종속성 탭] 드롭 다운에서 Android API 21 플랫폼을 선택하십시오-> 적용

API 21 플랫폼 선택

그런 다음 프로젝트를 다시 빌드 (Build-> Rebuild Project)하면 좋습니다.


2
또한 target = android-19에서 target = android-21로 대상을 변경 한 후 일식에서 같은 문제에 직면하고 있습니다. 값 폴더 친구에서 오류가 발생했습니다
prabhakaran

1
일식에서 AppCompat를 5.0으로 변경하면 더 이상 빌드되지 않고 .bin 폴더가 비어 있습니다.
Clive Jefferies

1
신난다, 정말 내가 과거 이일에서 고군분투했지만, UR 트릭 변화는 안드로이드-19 (21)에가 .. 감사합니다 남자 일
무 케시 Garg를

1
Eclipse를 사용하여 appcompat 프로젝트 자체뿐만 아니라 appcompat 라이브러리를 사용하는 모든 프로젝트에서 프로젝트 대상을 21로 업데이트해야했습니다.
Bianca Daniciuc

1
나는 현재 Eclipse / android에서 언급 한 이전 문제와 씨름하고 있습니다. 실제로 신뢰할 수없는 뚫을 수없는 볼록이 있습니다.
AndyUK

123

compileSdkVersionbuild.gradle 파일에서을 21로 설정하지 않았기 때문일 수 있습니다 . 당신은 아마 당신 targetSdkVersion을 21 로 바꾸고 싶을 것입니다 .

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

이를 위해서는 최신 SDK 업데이트를 다운로드해야합니다.

안드로이드 스튜디오 SDK 관리자

모든 업데이트를 다운로드 하고 (Android 지원 라이브러리 / 리포지토리도 업데이트하는 것을 잊지 마십시오!) compileSdkVersion을 업데이트 한 후 Gradle 프로젝트를 다시 동기화하십시오.

편집 : Eclipse 또는 일반 IntelliJ 사용자의 경우

reVerse의 답변을 참조하십시오. 그는 매우 철저한 안내를 받았습니다!


2
이것이 정답입니다. 21로 업그레이드하려면 새로운 appcompat 종속성이 필요하며 rev 12의 재생 서비스를 다운로드해야합니다.
sbaar

1
JDK 7
Chad Bingham

1
여전히 정확하지만 @reVerse의 솔루션을 참조하십시오. 더 철저합니다 :)
loeschg

IDE와 Gradle 중 하나를 사용하지 않았습니다 ... Ant와 메모장을 사용할 때 비슷합니까?
Valen

22

`아래 단계를 따르십시오 :

이 문제를 해결하려면

1. appcompat_v7 라이브러리를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.

2. 이제 Android 옵션을 클릭하고 프로젝트 빌드 경로를 Android 5.0 (API 레벨 21)으로 변경 사항을 적용하십시오.

3. 이제 appcompat_v7 라이브러리 아래의 project.properties 파일로 이동하십시오.

4. 프로젝트 대상을 다음과 같이 설정하십시오 : target = android-21

5. Now Clean + appcompat_v7 라이브러리 및 프로젝트 빌드


1
나는 당신의 길을 사용하고 프로젝트와 라이브러리에서 android-21 대상을 설정 한 다음 둘 다 청소했습니다. 감사합니다.
Md Mohsin

1
appcompat_v7 라이브러리는 어디에서 찾을 수 있습니까?
Sleep :

2
appcompat_v7 lib를 adt-bundle-windows-
x86_64-

이 답변은 위의 loeschg의 답변과 함께 Eclipse 에서이 문제를 해결했습니다.
Michael Todd

12

API 21을 대상 API로 사용하지 않기 위해 Material Theme를 사용하지 않으려면 API 19에 속하는 이전 개정을 사용해야합니다.>

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

또한 문제 해결에 도움이되며 달성하고자하는 대상에만 의존합니다.


동의합니다. 결국, 모든 사람이 21에 SDK를 목표로하는 것은 아닙니다.
peacepassion

10

play-services : 5.0.89에서이 문제가 발생했습니다. 6.1.11로 업그레이드하면 문제가 해결되었습니다.


8

Android Studio에서 compileSdkVersionand targetSdkVersion를 설정하려고 했습니다 19.

내 솔루션의 하단에 교체했다 build.gradle, 에서 이 :

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

appcompat 라이브러리의 이전 버전으로 :

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

appcompact에서 최신 버전을 사용하고 있었지만 이제는 이전 버전으로 업그레이드하고 싶지만 exploded-arr 폴더에이 오류가 발생합니다
Antwan

3

작업 공간에 다른 프로젝트를 추가하고 매니페스트 파일에서 해당 작업을 참조하려고하는데이 오류가 발생했습니다. 문제는 라이브러리를 잘못 참조하고 있다는 것입니다. 이것이 내가 문제를 해결 한 방법입니다.

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오
  • 속성 선택
  • 왼쪽 메뉴에서 Android를 클릭하십시오.
  • 추가 클릭
  • 도서관 프로젝트를 선택하십시오

jar가 Android Dependencies 폴더로 이동하여이 오류가 수정되었습니다.


나는 당신의 순서를 실행했습니다. 그런 다음«Jar mismatch! 종속 appcompat 및 google play 서비스 라이브러리 프로젝트의 libs / 및 jar의 jar이 일치하지 않아 (SHA-1 및 jar 파일 길이가 일치하지 않으므로) Android 콘솔에서 종속성을 수정하십시오. 더 고군분투하면서, 나는 이것이 성공이라고 생각합니다.
유진 Gr. Philippov

2

안드로이드 스튜디오 (또는 일식)에서 프로젝트를 청소하십시오.

문제를 해결해야합니다


2
이 경우 프로젝트를 정리하면 작동하지 않습니다. 특히 새 Android SDK, appcompat 라이브러리 등을 다운로드 한 경우 다른 Android 라이브러리 및 / 또는 리소스에 대한 누락 된 링크를 찾지 않으면서도 오류가 자동으로 정리되지 않으므로 오류가 발생하지 않습니다. ReVerse 의 답변은 최신 Android API 레벨 21 다운로드 문제를 스스로 해결하는 방법을 모르는 사람들에게 정확하고 철저합니다.
ChuongPham

2

최신 gradle 플러그인으로 업그레이드하면 내 문제가 해결됩니다.

classpath 'com.android.tools.build:gradle:0.13.+'

0.14.0은 실제로 그리 오래지 않아 발표되었습니다
loeschg

그래, 난 여전히 0.12를 사용하고 있었는데 아마도 다른 누군가가 0.13 또는 0.14로 업그레이드하는 데 도움이 될 수 있습니다
avianey

2

일식에서 작업 공간에 두 번째 프로젝트를 만든 후이 문제가 발생했습니다. 다른 SDK 버전으로 작성했기 때문에 Android-support-v7-appcompat 라이브러리를 작성 했으므로 믿습니다.

나는 모든 것을 정리하려고 노력했지만 아무 소용이 없었다. 궁극적으로 위의 project.properties를 편집하고 target = android-21을 변경하고 내 프로젝트를 Android 5.0으로 설정하라는 제안이 수정되었습니다.


2

내가 추천하는 것은 : (이것은 며칠 후에 오류가 발생합니다)

-다운로드했는지 확인하십시오 :

- the Lastest SDK Platform from the latest Android version
- Android Suppor Librarie and Repository from EXTRAS 

ADT 다시로드

-프로젝트의 보안 사본을 만드십시오.

-동일한 디스크에 가져올 ADT, 작업 공간 및 프로젝트가 있어야합니다 (예 : C : /)

  1. 이제 앱 compat과 프로젝트를 삭제하십시오.

  2. 일식에서 : 파일> 가져 오기> Android 기존 프로젝트> 다음> 찾아보기 (ADT가있는 폴더) / sdk / extras / android / v7 / appcompat> 가져 오기> 완료

  3. 이제 Eclipse 패키지 탐색기에서 android-support-v7-appcompat / libs / 두 JAR에서 작성하십시오. 마우스 오른쪽 단추로 클릭> 빌드 경로> 빌드 경로에 추가

  4. libs / 폴더> Buil Path> Build Path 구성을 마우스 오른쪽 버튼으로 클릭 하고이 두 JAR을 확인하십시오.

  5. 상단 이클립스 바에서> 프로젝트> 정리

  6. 프로젝트 가져 오기> 파일> 가져 오기> 프로젝트 찾아보기> 완료

  7. 이제 프로젝트 파일과 android-support-v7-appcompat> 속성> Android>를 마우스 오른쪽 버튼으로 클릭하고 나타나는 최신 API를 선택하고 확인을 클릭하십시오.

  8. 프로젝트 파일을 마우스 오른쪽 버튼으로 클릭하고 속성> Android> 추가> android-support-v7-appcompat

  9. 상단 이클립스 바에서> 프로젝트> 정리


2

Compile SDK 버전을 API : 21에서 API : 16으로 변경했을 때도 같은 오류가 발생했습니다. 문제는 appcompat 버전이었습니다. 이전 버전의 Android API를 사용해야하는 경우이 appcompat 버전도 변경해야합니다. 필자의 경우 ( API : 16 ) appcompat-v7 : 19. + 를 사용해야 했습니다 .

따라서 build.gradle의 종속성 을 다음과 같이 바꿉니다 .

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

SDK에 이전 버전의 appcompat 버전이 있는지 확인하십시오. 여기에 이미지 설명을 입력하십시오


2

나는 모든 것에 최신이었고 여전히이 오류가 발생했습니다. 왜 그런지 확실하지 않지만 이미지가 이상한 방식으로 손상되었다고 생각하고 이미지를 교체 한 후에 오류가 제거되었습니다. 다른 이미지로 시도해 볼 가치가 있습니다. :)


1

내 문제는 내 프로젝트에서 참조 한 다른 라이브러리가 있고 해당 라이브러리에 다른 버전의 appcompat가 참조되었다는 것입니다. 이것이 내가 문제를 해결하기 위해 한 것입니다.

(이 작업을 수행하기 전에 프로젝트를 백업해야합니다)

1) 모든 appcompat 레이아웃 폴더를 삭제했습니다 (예 : / res / layout-v11).

2) 그로부터 발생하는 문제, 보통 menu.xml의 오류를 해결했습니다.

3) 메인 프로젝트로 돌아가 appcompat 라이브러리를 추가하고 깨끗하게 정리하면 모든 것이 작동합니다!

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