항목의 상위 검색 오류 : AppCompat v23으로 업그레이드 한 후 주어진 이름과 일치하는 자원이 없습니다.


780

나는 항상 Eclipse를 사용하여 Android를 프로그래밍했으며 Android Studio로 마이그레이션을 시작하기로 결정했습니다 . 나는 이미 Eclipse와 동일한 SDK를 사용하기로 결정했다.

  • 새로운 프로젝트 시작
  • 최소 SDK 4.0 설정 (API 레벨 14)
  • 빈 활동 선택 옵션
  • 활동 이름 및 레이아웃 이름에 사용 된 기본 이름
  • 히트 마무리

몇 초 후 Gradle은 빌드를 완료하고 Teste4 \ app \ build \ intermediates / exploded-aar \ com.android.support \ appcompat-v7 \ 23.0.0 \ res \ values ​​파일에 다음 메시지와 함께 두 가지 오류가 발생합니다. -v23 \ values-v23.xml :

오류 : (2) 항목의 부모를 검색하는 동안 오류가 발생했습니다 : 주어진 이름 'android : TextAppearance.Material.Widget.Button.Inverse'와 일치하는 리소스를 찾을 수 없습니다.

오류 : (2) 항목의 부모를 검색하는 동안 오류가 발생했습니다 : 주어진 이름 'android : Widget.Material.Button.Colored'와 일치하는 리소스를 찾을 수 없습니다.

아래에서 파일 -> 프로젝트 구조 -> 모듈 : 응용 프로그램 (왼쪽 열) -> 속성 탭 , 나는 다음 버전이 설정 한 :

  • "컴파일 SDK 버전": Android 5.1 (API 레벨 22)
  • "빌드 도구 버전": 23.0.2

이 문제를 해결하려면 어떻게해야합니까?

이미 스택 오버플로 질문 appcompat-v7 : 21.0.0 ' 에서 제안 된 것을 시도했습니다 .attr'android : actionModeShareDrawable '과 같은 이름과 일치하는 리소스를 찾을 수 없지만 작동하지 않았습니다.

답변:


1147

컴파일 SDK 버전은 지원 라이브러리의 주 버전과 일치해야합니다.

지원 라이브러리 버전 23을 사용하고 있으므로 Android SDK 버전 23에 대해 컴파일해야합니다.

또는 최신 지원 라이브러리 v22로 전환하여 Android SDK 버전 22에 대해 계속 컴파일 할 수 있습니다.


10
에서 수동으로 변경 build.gradle하거나 프로젝트 속성을 열고 "종속성"탭으로 이동하여 GUI를 사용할 수 있습니다.
Bryan Herbst

11
이 질문과 답변은 앱이 실행되는 버전과 관련이 없습니다. 앱 타겟팅 22는 23을 실행하는 장치에서 제대로 실행될 수 있습니다. 여기 설명 된 문제는 지원 라이브러리가 23 SDK의 일부 API를 참조하므로 지원 라이브러리 버전 23에서는 23을 대상으로해야한다는 것입니다.
Bryan Herbst

42
Android Studio를 처음 사용하고 Android 프로젝트 (v1.3.1)에서 "프로젝트 속성을 열어서 GUI를 사용하는 방법"에 대해 혼란스러워하는 사람들의 경우 파일, 프로젝트 구조로 이동 한 다음 왼쪽에서 하단의 -hand pane은 모듈 아래의 항목입니다 (필자의 경우 "앱"이라고 함). 클릭하면 종속성 탭이 나타납니다.
Bryan

119
나는 여전히 안드로이드 스튜디오가 너무 기본적인 것을 테스트하지 않고 물건을 출시한다고 믿을 수 없다! 적어도 의미있는 경고를 해주세요!
Josh

30
GUI가 "올바른 Android API 버전을 타겟팅하지 않는 것을 감지했습니다. 수정 하시겠습니까?"라는 메시지가 나타납니다. 대신 비행기에서 작업을 중단하고 stackoverflow를 검색 할 수있을 때까지 기다려야합니다.
누군가 어딘가에

137

업데이트 후 Android Studio는 기본적으로 API 버전 23 을 사용하기 때문에 발생합니다 .

다음은 나를 위해 일했습니다.

Ctrl+ Shift+ Alt+ S를 눌러 프로젝트 구조 페이지로 이동하십시오. 속성 탭으로 이동 하여 빌드 도구 영역에서 23.0.022.0.1 (또는 이전에 사용했던 것과 동일)로 변경하고 프로젝트를 다시 빌드하십시오.

그래도 작동하지 않으면 gradle : app 로 이동 한 다음

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

편집 V7 : 23.0.0V7 : 22.2.1 이상과 동기화 Gradle을 같이. 이것은 확실히 작동합니다.


10
"gradele : app로 이동 한 다음 fileTree (dir : 'libs', 다음을 포함 : [ '* .jar'] 포함) 컴파일 방법에 대해 혼란스러워하는 저와 같은 초보자에게는 'com.android.support:appcompat-v7:22.2 .1 ' ", 내 Android Studio (버전 1.3.1)의 프로젝트 창 (맨 왼쪽에 1 : 프로젝트 탭을 클릭하여 열었 음)에 Gradle 스크립트 아래에"build.gradle "이라는 두 개의 항목이 있습니다. . 두 번째 것은 옆에 (모듈 : 앱)이 있습니다. 두 번 클릭하여 열었습니다. 그런 다음 하단의 종속성 섹션에서 v7 : 23.0.0을 v7 : 22.2.1로 변경했습니다. 저장하고 Studio의 프롬프트에 따라 동기화했습니다. 컴파일하는 것처럼 보였습니다.
Bryan

4
MAC에서 프로젝트 구조 페이지를 입력하려면 어떻게해야합니까?
rosu alin

4
@Sourav도 이러한 변경을 수행 한 후에도 오류가 해결되지 않습니다. 여전히 v23/values-23.xml파일에 이러한 오류가 있습니다. 프로젝트 구조 페이지에서 값을 변경하고 앱을 다시 빌드했습니다. 그러나 여전히 문제에 직면하고 있습니다 :(
Prabs

Mac에서 단축키는 ⌘ +; . 또는 파일> 프로젝트 구조로 이동할 수 있습니다.
Tomanow

115

Android Studio를 업데이트하면 기본적으로 API 버전 23이 사용되는데, 이것이 주요 원인입니다. 그래서,

먼저 build.gradle (Module : app)에서 AppCompat 버전을 확인하십시오.

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

23으로 변경 한 후 오류가 발생하면 다운로드하십시오.

Compile Sdk Version to API 23, and Build Tools Version to 23.0.0

SDK 관리자에서. 이미 다운로드 된 경우 :

1. Go to SDK Manager and
2. Under Project Structure, change *Compile SDK Version* to API 23, and *Build Tools Version* to 23.0.0

SDK 관리자 버튼을 클릭하고 대화 상자를 엽니 다.

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

SDK Platform을 클릭하고 Android 6.0이 다운로드되었는지 확인하십시오.

그렇지 않은 경우 먼저 다운로드하십시오. 다운로드가 완료되면를 클릭하십시오 Apply.

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

이제 설정에서 프로젝트에 변경 사항을 적용해야합니다. 그런 다음 Ctrl+ Alt+ Shift+S 를 눌러 설정을 엽니 다

  1. 목록에서 앱을 클릭하십시오.
  2. 클릭 속성
  3. Compile SDK 버전 을 API 23으로 변경
  4. 빌드 도구 버전 을 23.0.0으로 변경

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

프로젝트를 다시 빌드하는 것을 잊지 마십시오.

그러면 오류가 사라질 것입니다.


1
솔루션을 정의하는 방법을 이해했지만 전체 설명으로 게시물을 설명하려고합니다.
Naveed Ahmad

1
@NaveedAhmad Ok 내 게시물을 편집하려고합니다. 당신의 제안에 감사드립니다.
Ravikant Paudel

1
위의 문제와 관련된 게시물을 추가했습니다. stackoverflow.com/a/32370099/2915785
Naveed Ahmad

1
야, 같은 appcompat 버전을 추가하십시오, 그것은 내 문제를 해결
vuhung3990

2
그런 경우 스크린 샷은 내가 그런 인형에 도움이됩니다.
ern0

70

대상을 이전 GooglePlayServices 또는 AppCompatv7 버전으로 변경하려고 시도했지만 작동하지 않는 경우 프로젝트 라이브러리 종속성이 있는지 확인하십시오.이 프로젝트는 이러한 라이브러리 중 최신 버전을 대상으로합니다. Google Maps Utils Library 프로젝트에서 나에게 일어났습니다.

바꾸다:

compile 'com.google.android.gms:play-services:+'

compile 'com.google.android.gms:play-services:8.3.0'

그런 다음 전체 타겟팅 API 22를 계속할 수 있습니다

여전히 컴파일되지 않으면 때로는 compileSdkVersion API를 23으로 설정하고 targetSdkVersion을 22로 설정하는 것이 유용합니다.


35

이전 답변에 동의합니다. 컴파일 SDK 버전은 지원 라이브러리와 일치해야합니다. 여기 내가 한 일이 있습니다.

  1. SDK Manager로 이동하여 SDK Platform에서 API 레벨 23을 사용하여 Android 5.X를 설치할 수 있습니다.
  2. 프로젝트 구조에서 컴파일 SDK 버전을 API 23으로 변경하고 빌드 도구 버전을 23.0.0으로 변경하십시오.

그런 다음 문제없이 구축해야합니다.


22

compileSdkVersion을 23으로 설정해야합니다.

API 23 Android는 더 이상 사용되지 않는 Apache Http 패키지를 제거 했으므로 서버 요청에 해당 패키지를 사용하는 경우 다음 링크에 명시된대로 useLibrary 'org.apache.http.legacy'를 추가해야합니다 build.gradle.

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"
    ...

    //only if you use Apache packages
    useLibrary 'org.apache.http.legacy'
}

15

이 문제는 이제 컴파일 SDK 버전이 Android 지원 라이브러리의 주요 버전과 일치해야하기 때문에 발생합니다.

제 경우에는 Android Support Library버전 23이 있으므로에 대해 컴파일 Android SDK version 23해야하며 build.gradle파일 에서 이것을 변경해야했습니다 .

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

글쎄요, 여러분 중 일부는 SDK를 설치해야합니다. Android 6.0 (API 23)

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

gradle 파일과 프로젝트동기화하는 것을 잊지 마십시오


12
android {
    compileSdkVersion 23
    buildToolsVersion '23.0.1'

defaultConfig {
    applicationId ""
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.code.gson:gson:2.3.1'
compile 'com.android.support:recyclerview-v7:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.1'
}

9

나는 다른 사용 된 후 문제가, 내가 SDK를 업데이트 할 때 시작 솔루션을 발견 buildToolsVersion ('22 .0.1 ')을 내가 다른 사용 된 지원 과 같은 라이브러리 컴파일'com.android.support:appcompat-v7:23.0.0 '을 , 아래 이미지에서 당신을 보여주는

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

이것은 " android.widget.Material ..."의 문제를 일으켰습니다 . 그런 다음 컴파일 'com.android.support:appcompat-v7:22.0.1' 과 같은 지원 라이브러리와 동일한 버전을 사용 했습니다. (아래 스크린 샷에 표시)

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


9

SDK에서 업데이트 및 설치하려면 최신 버전으로 프로젝트를 컴파일해야합니다. sync project with Gradle file버튼으로 프로젝트를 동기화하십시오 .
기존 버전을 계속 사용할 수 있지만 이미지 아래에서 올바르게 설치되었는지 확인하면 올바르게 설치된 API 22를 나타냅니다.여기에 이미지 설명을 입력하십시오

필요한 경우 프로젝트를 동기화하십시오.

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

도움이 될 수 있습니다.


8

Tanis.7x에서 지적했듯이 지원 라이브러리 버전 (23)이 targetSdkVersion (22)과 일치하지 않습니다.

다음을 수행하여이 문제를 해결할 수 있습니다.

에서 build.grade앱 모듈의 파일, 다음 코드 줄을 변경

compile 'com.android.support:appcompat-v7:23.0.0'

compile 'com.android.support:appcompat-v7:22.+'

SdkVersion 22와 호환되는 최신 버전의 appcompat 버전을 사용합니다.


7

컴파일 SDK 버전은 지원 라이브러리 메이저 버전과 일치해야합니다. 이것이 귀하의 문제에 대한 해결책입니다. Gradle Scripts build.gradle파일 에서 쉽게 확인할 수 있습니다 . Fx : compileSdkVersion23 세인 경우 컴파일 라이브러리는 23시에 시작해야합니다.

  compileSdkVersion 23
    buildToolsVersion "23.0.0"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 340
        versionName "3.4.0"
    }
dependencies {
    compile 'com.android.support:appcompat-v7:23.1.0'
    compile 'com.android.support:recyclerview-v7:23.0.1'
}

또한 Android Studoi에 지원되는 API 레벨이 있는지 항상 확인하십시오. 다음과 같이 Android SDK에서 확인할 수 있습니다. 여기에 이미지 설명을 입력하십시오


6

제 경우에는 Google Play 서비스의 상위 버전이었습니다. 나는 그것들을 7.0.0 (8.x 아님)으로 설정했고 모두 괜찮았다.


5

API 23에서 22로 다운 그레이드하고 싶었고이 오류가 발생했습니다. 컴파일하기 위해 프로젝트의 모든 build.gradle 파일 을 변경해야했습니다 .

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.yourapp.app"
        minSdkVersion 14
        targetSdkVersion 22
    }
...
dependencies {
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.android.support:design:22.2.1'
    compile 'com.google.android.gms:play-services-gcm:10.0.1'
}

4

이것이 나를 도와줍니다 : 특정 안드로이드 플랫폼 추가

무엇을 수행해야하는 내 경우에는 그것은이었다 ... 다음과 같다 cordova하지만 같은 관련이 ionic, phonegap그리고이 같은 다른 프레임 워크 :

  1. 프로젝트에 설치된 모든 플랫폼을 나열하십시오 cordova platform list. 다음과 같은 것을 보게 될 것입니다 :

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

  1. 안드로이드 플랫폼을 제거하십시오 : cordova platform remove android.

  2. 그런 다음 특정 안드로이드 플랫폼을 추가하십시오 cordova platform add android@5.0.0.

행운을 빕니다! :)


3

나는 같은 문제를 겪었다. 각 하위 모듈의 gradle.build를 최신 컴파일러 버전으로 업데이트하여 문제를 해결했습니다.



1

다른 해결책 :로 이동

\sdk\extras\android\m2repository\com\android\support\appcompat-v7\23.x.x

.aar7-zip 또는 winrar 파일을 열고 res 폴더에서 폴더를 제거 values-23하고 변경 사항을 저장하십시오.


1

모듈 : app (Gradle)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.namepack.nameappxxxxx"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

프로젝트 : nameAppXXXX (Gradle)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'

    }
}

allprojects {
    repositories {
        jcenter()
    }
}

AppCompatActivity의 활동을 예를 들어 활동으로 편집하십시오.

package com.namepack.nameappxxxxx;


import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class NameClass extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
    }


}


1

Android Studio를 업그레이드하십시오.

Android Studio 1.3.1 에서이 문제가 있었지만 다른 답변은 저에게 효과적이지 않았지만 1.5.1로 업데이트 한 후에는 아무런 문제가 없었습니다.


1

phonegap (cross-platform)을 사용하고 위의 동일한 문제가 발생하면 아래 명령을 사용하여 안드로이드 플랫폼을 제거하십시오.

phonegap 플랫폼은 안드로이드를 제거

그리고 다시 추가하십시오.

phonegap 플랫폼 안드로이드 추가

그런 다음 문제가 해결되었습니다.


0

다른 사람들이 이미 언급했듯이 주요 버전 compile sdk version과 일치해야합니다 support library's. 그러나 이것은 또한 subprojects가지고 있어야합니다.

그럴 경우 subprojects다음 스크립트를 사용 하여 컴파일 SDK 버전을 설정할 수 있습니다 .

subprojects { subproject ->
afterEvaluate{
    if((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) {
        android {
            compileSdkVersion rootProject.ext.compileSdkVersion
            buildToolsVersion rootProject.ext.buildToolsVersion
        }
      }
   }
}

루트 build.gradle파일 에이 스크립트를 추가 하십시오.


-1

최신 SDK 및 Android Studio를 다운로드 한 후에도 오류가 발생하면 다음을 수행하십시오.

  1. 최신 SDK 다운로드
  2. 파일 프로젝트 구조 열기 ( Ctrl+ Alt+ Shift+ S)
  3. 모듈에서 앱을 선택하십시오.
  4. 속성 탭에서 : 컴파일 SDK 버전을 API 23 Android 6.0 마시맬로로 변경 (최신)

나는 내가 며칠 동안했던 것처럼 그가 고통받지 않도록 누군가를 돕기를 바랍니다.

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