developer tip

항목의 상위 항목 검색 오류 : AppCompat v23으로 업그레이드 한 후 지정된 이름과 일치하는 리소스를 찾을 수 없습니다.

copycodes 2020. 9. 29. 07:56
반응형

항목의 상위 항목 검색 오류 : AppCompat v23으로 업그레이드 한 후 지정된 이름과 일치하는 리소스를 찾을 수 없습니다.


저는 항상 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

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

이미 Stack Overflow question appcompat-v7 : 21.0.0 ': No resource found that match the given name : attr'android : actionModeShareDrawable ' 에서 제안 된 것을 시도했지만 작동하지 않았습니다.


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

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

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


이는 업데이트 후 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동기화하십시오. 이것은 확실히 작동합니다.


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 Manager 버튼을 클릭하고 대화 상자를 엽니 다.

여기에 이미지 설명 입력

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

그렇지 않은 경우 먼저 다운로드하십시오. 다운로드를 완료 한 후을 클릭 Apply합니다.

여기에 이미지 설명 입력

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

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

여기에 이미지 설명 입력

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

그러면 오류가 사라집니다.


대상을 이전 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로 설정하는 것이 유용한 경우가 있습니다.


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

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

그러면 문제없이 구축되어야합니다.


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'
}

이제 컴파일 SDK 버전이 Android 지원 라이브러리의 주 버전과 일치해야하므로이 문제가 발생합니다.

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

여기에 이미지 설명 입력

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

여기에 이미지 설명 입력

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


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'
}

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

여기에 이미지 설명 입력

이로 인해 " android.widget.Material ..." 문제가 발생했습니다. 그런 다음 컴파일 'com.android.support:appcompat-v7:22.0.1'같은 지원 라이브러리에 동일한 버전을 사용 하고 완료했습니다. (아래 스크린 샷에 표시)

여기에 이미지 설명 입력


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

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

여기에 이미지 설명 입력

도움이 될 수 있습니다.


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 버전을 사용합니다.


컴파일 SDK 버전은 지원 라이브러리 주 버전과 일치해야합니다. 이것이 귀하의 문제에 대한 해결책입니다. build.gradle파일 의 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에서 확인할 수 있습니다.여기에 이미지 설명 입력


제 경우에는 더 높은 버전의 Google-play-services였습니다. 7.0.0 (8.x 아님)으로 설정했는데 모두 괜찮 았습니다.


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'
}

이것이 나에게 도움이 된 것입니다 : 특정 안드로이드 플랫폼 추가

수행해야 할 작업은 다음과 같습니다 ... 제 경우 cordova에는 동일하지만 ionic, phonegap및 이와 같은 다른 프레임 워크와 관련이 있습니다.

  1. 프로젝트에 설치된 모든 플랫폼 목록 : cordova platform list. 다음과 같은 내용이 표시됩니다.

여기에 이미지 설명 입력

  1. 안드로이드 플랫폼 제거 : cordova platform remove android.

  2. 그런 다음 특정 Android 플랫폼을 추가합니다 cordova platform add android@5.0.0..

행운을 빕니다! :)


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


모든 것이 훌륭하지만 SDK 빌드 도구를 어디에서 다운로드해야하는지 아무도 설명하지 않았습니다.

모든 것이 훌륭하지만 SDK 빌드 도구를 어디에서 다운로드해야하는지 아무도 설명하지 않았습니다.


또 다른 해결책 : 탐색

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

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


모듈 : 앱 (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의 활동을 예를 들어 Activity로 편집하십시오.

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);
    }


}

SDK 관리자

이 모든 것이 최신 상태인지 확인하십시오.


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

Android Studio 1.3.1 에서이 문제가 발생했으며 다른 답변 중 어느 것도 저에게 효과가 없었지만 1.5.1로 업데이트 한 후에도 문제가 없었습니다.


phonegap (cross-platform)을 사용 중이고 위와 같은 문제가 발생하면 아래 명령을 사용하여 Android 플랫폼을 제거하십시오.

phonegap 플랫폼 제거 안드로이드

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

phonegap 플랫폼 안드로이드 추가

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


다른 사람들이 이미 언급했듯이 주요 버전 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파일 에 추가 하십시오.


최신 SDK 및 Android Studio를 다운로드 한 후에도 오류가 발생하는 경우 다음을 수행했습니다.

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

이틀 동안 내가했던 것처럼 그가 고통받지 않도록 누군가에게 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/32075498/error-retrieving-parent-for-item-no-resource-found-that-matches-the-given-name

반응형