programing

appcompat-v7:21.0.0': 지정된 이름과 일치하는 리소스를 찾을 수 없습니다. 특성 'android:actionModeShareDrawable'

magicmemo 2023. 8. 29. 20:21
반응형

appcompat-v7:21.0.0': 지정된 이름과 일치하는 리소스를 찾을 수 없습니다. 특성 'android:actionModeShareDrawable'

프로젝트에서 최신 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'.

이거 어떻게 고쳐요?

loeschg의 대답은 전적으로 옳지만, 저는 그것에 대해 자세히 설명하고 오류가 약간 다르더라도 모든 IDE(이클립스, IntellJ 및 Android Studio)에 대한 솔루션을 제공하고 싶습니다.


전제 조건

최신버다했확지인다니합는드운로전을을 했는지 확인하십시오.extras뿐만 아니라Android 5.0 SDKSDK-Manager 파일입니다.

Picture of the SDK Manager


안드로이드 스튜디오

.build.gradle또는build.gradle.kts하고 당신의 앱을 하세요.compileSdkVersion으로 21도를 기본적으로 변경할 필요가 없습니다.targetSdkVersionSDK-Version을 21로 변경하지만 항상 최신 안드로이드 빌드 버전을 대상으로 해야 하므로 권장합니다.
최종적으로 다음과 같은 그라들 파일이 표시됩니다.

android {
    compileSdkVersion(21)
    // ...

    defaultConfig {
        // ...
        targetSdkVersion(21)
    }
}

나중에 프로젝트를 동기화해야 합니다.

Android Studio Gradle Sync reminder


이클립스

v7-appcompat이클립스에서는 라이브러리 프로젝트로 사용해야 합니다.를 *.jar 파일에 ./libs폴더를 누릅니다.프로젝트를 올바르게 가져오는 방법을 알기 위해서는 developer.android.com 의 (클릭) 단계별 튜토리얼을 읽어보시기 바랍니다.

프젝트가 의폴가더일에 폴더를 될 입니다./res다음과 같은 오류로 인해 폴더에 빨간색 밑줄이 그어져 있습니다.

Errors in Eclipse

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.propertiesandroid-support-v7-appcompat을 그고타 변경니다에서 변경합니다.target=android-19target=android-21.
나중에 그냥 해요.Project --> Clean...변경 사항이 적용되도록 합니다.


IntelliJ IDEA(Gradle 사용 안 함)

Eclipse와 유사하게, 이것은 단지 사용하기에 충분하지 않습니다.android-support-v7-appcompat.jar당신은 그것을 가져와야 합니다.appcompat모듈로서자세한 내용은 이 Stack O-Post에서 확인하십시오(클릭).
(참고: 를 사용하는 경우에만 Runtime을 사용할 수 있습니다.

프로젝트를 구축하려고 할 때 다음과 같은 문제가 발생할 수 있습니다.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

해결책

을 오른쪽 버튼으로 합니다.appcompatmodule --> Open Module Settings (F4) --> [Dependency Tab] 드롭다운에서 Android API 21 Platform 선택 --> Apply

Select API 21 Platform

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

은 아마도 설정하지않때수있다니습일을 입니다.compileSdkVersionbuild.gradle 파있는 21.당신은 또한 아마도 당신의 것을 바꾸고 싶을 것입니다.targetSdkVersion21까지

android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

이렇게 하려면 먼저 최신 SDK 업데이트를 다운로드해야 합니다.

Android Studio SDK Manager

모든 업데이트(Android 지원 라이브러리/리포지토리도 업데이트하는 것을 잊지 마십시오!)를 다운로드하고 컴파일SdkVersion을 업데이트했으면 Gradle 프로젝트를 다시 동기화합니다.

편집: 이클립스 또는 일반 IntelliJ 사용자용

ReVerse의 답변을 참조하십시오.그는 매우 철저한 걸음걸이를 가지고 있습니다!

"아래 단계를 따르십시오.

그것은 나에게 효과가 있습니다.이 문제를 해결하려면,

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

2. 이제 Android 옵션을 클릭하여 Project Build Path를 Android 5.0으로 설정(API 레벨 21) 변경 사항 적용.

3.이제 appcompat_v7 라이브러리의 project.properties 파일로 이동합니다.

4. 프로젝트 목표를 다음과 같이 설정합니다: target=target-21

5.이제 Clean + Build appcompat_v7 라이브러리 및 프로젝트'

API 21을 대상 API로 사용하고 싶지 않아 Material Theme을 사용하지 않으려는 경우 API 19에 속한 이전 버전을 사용해야 합니다 >

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

이것은 또한 여러분의 문제를 해결하는 데 도움이 되며, 그것은 여러분이 성취하기를 원하는 것에 달려있습니다.

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

에서 Android Studio를 .compileSdkVersion그리고.targetSdkVersion19.

저의 해결책은 아래 부분을 교체하는 것이었습니다.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.+'
}

작업영역에 다른 프로젝트를 추가하고 매니페스트 파일의 작업을 참조하려고 했는데 이 오류가 발생했습니다.문제는 제가 도서관을 잘못 참조하고 있었다는 것입니다.다음과 같이 문제를 해결했습니다.

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

이 병은 Android Dependencies 폴더에 들어갔고 이 오류는 수정되었습니다.

안드로이드 스튜디오(또는 이클립스)에서 프로젝트를 청소해야 합니다.

그것은 당신의 문제를 해결할 것입니다.

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

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

일식 때 작업 공간에 두 번째 프로젝트를 만든 후, 저는 이 문제를 겪었습니다.제가 다른 SDK 버전으로 만들어서 안드로이드-support-v7-appcompat 라이브러리를 덮어썼기 때문이라고 생각합니다.

저는 모든 것을 치우려고 했지만 소용이 없었습니다.궁극적으로, 위의 제안은 project.properties를 편집하고 target=sys-21을 변경하여 제 프로젝트를 Android 5.0으로 설정하고 수정했습니다.

제가 추천하는 것은 다음과 같습니다. (오류가 발생한 지 여러 날이 지난 후에도 작동합니다.)

-다음을 다운로드했는지 확인합니다.

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

- ADT 다시 다운로드

-프로젝트의 보안 복사본을 만듭니다.

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

  1. 이제 앱 호환 및 프로젝트를 삭제합니다.

  2. 일식:File > Import > Android existing project > Next > Browse (ADT가 있는 폴더) /sdk/extras/android/v7/appcompat > Import > Finish

  3. 이제 이클립스 패키지 탐색기에서: 안드로이드-서포트-v7-appcompat/libs/ 두 JAR에서 만들기: 오른쪽 클릭 > 빌드 경로 > 빌드 경로에 추가

  4. libs/folder 오른쪽 클릭 > Buille Path > Configure Build Path > 이 두 JARs > OK

  5. 위 이클립스 바 > 프로젝트 > Clean

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

  7. 이제 프로젝트 파일 및 Android-support-v7-appcompat > 속성 > Android > 표시되는 최신 API를 마우스 오른쪽 버튼으로 클릭 > OK

  8. 프로젝트 파일 우클릭 > 속성 > Android > 추가 > Android-support-v7-appcompat

  9. 위 이클립스 바 > 프로젝트 > Clean

컴파일 SDK 버전을 API:21에서 API:16으로 변경했을 때 동일한 오류가 발생했습니다.문제는 앱 호환 버전입니다.만약 당신이 이전 버전의 안드로이드 API를 사용해야 한다면, 당신은 이 앱compat 버전도 변경해야 합니다.저의 경우 (API:16의 경우) appcompat-v7:19.+를 사용해야 했습니다.

그래서 저는 build.gradle의 종속성을 다음과 같이 바꿉니다.

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

SDK에 하십시오.enter image description here

저는 모든 것을 최신 상태로 유지했지만 여전히 이 오류가 발생했습니다. 이유는 모르겠지만 이미지가 이상하게 손상된 것 같습니다. 이미지를 교체한 후 오류를 제거했습니다.다른 이미지로 시도해 볼 가치가 있을 수 있습니다 :)

제 문제는 제 프로젝트가 참조한 다른 라이브러리와 그 라이브러리들이 다른 버전의 appcompat을 참조했다는 것입니다.이 문제를 해결하기 위해 수행한 작업은 다음과 같습니다.

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

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

이로 인해 발생한 문제(일반적으로 menu.xml의 오류)를 해결했습니다.

메인 프로젝트로 돌아가서 앱 호환 라이브러리를 추가하고 청소하면 모든 것이 작동합니다!

언급URL : https://stackoverflow.com/questions/26431676/appcompat-v721-0-0-no-resource-found-that-matches-the-given-name-attr-andro

반응형