アイテムの親の取得中にエラーが発生しました: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に次のメッセージを含む2つのエラーをスローします-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を使用できます。
ブライアンハーブスト2015

11
この質問と回答は、アプリが実行されるバージョンとは関係ありません。22をターゲットとするアプリは、23を実行しているデバイスで問題なく実行できます。ここで説明する問題は、サポートライブラリバージョン23では23 SDKのAPIを参照するため、23をターゲットにする必要があることです。
ブライアン

42
Android Studioを初めて使用し、「プロジェクトのプロパティを開いてGUIを使用する」方法について混乱している私のような人のために、Android Studio(v1.3.1)で、[ファイル]、[プロジェクトの構造]、次に左側に移動します。下部のハンドペインは、モジュール(私の場合は「アプリ」と呼ばれます)の下のエントリです。それをクリックすると、[依存関係]タブが表示されます。
ブライアン

119
Android Studioが非常に基本的なものをテストすることなしにものをリリースすることをまだ信じることができません!! 少なくともいくつかの意味のある警告を入れてください!!
Josh、

30
GUIは「適切なAndroid APIバージョンをターゲットにしていないことを検出しました。修正しますか?」というメッセージをポップアップするはずでした。代わりに、飛行機での作業を停止し、stackoverflowを検索できるようになるまで待つ必要があります。
誰か、どこかで

137

これは、更新後にAndroid StudioがデフォルトでAPIバージョン23を使用するために発生します。

以下は私のために働きました:

Ctrl+ Shift+ Alt+ Sを押して、プロジェクト構造ページに移動します。プロパティタブに移動し、ビルドツール領域で23.0.022.0.1(または以前使用していたものと同等)に変更して、プロジェクトを再ビルドします。

それは仕事をしない場合は、行くのGradle:アプリをして、

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

編集V7:23.0.0へのV7:22.2.1のGradleの上と同期示すように。これは間違いなく動作します。


10
「gradle:appに移動してfileTree(dir: 'libs'、include:['* .jar'])をコンパイルする方法について混乱している私のような初心者の場合、com.android.support:appcompat-v7:22.2をコンパイルします。 .1 '"、私のAndroid Studio(バージョン1.3.1)のプロジェクトペイン(左端の[1:Project]タブをクリックして開いた)で、「build.gradle」と呼ばれるGradleスクリプトの下に2つのエントリが表示されます。2つ目は(モジュール:アプリ)の横にあります。ダブルクリックして開きました。次に、下部の依存関係セクションで、v7:23.0.0をv7:22.2.1に変更しました。保存しました(そしてStudioの指示に従って同期しました)-コンパイルは問題ないようです。
ブライアン

4
MACでプロジェクト構造ページに入るにはどうすればよいですか?
rosu alin

4
@Souravこれらの変更を行った後でもエラーは解決されません。それでもv23/values-23.xmlファイルにこれらのエラーがあります。プロジェクト構造ページの値を変更し、アプリを再構築しました。しかし、依然として問題に直面しています:(
Prabs

Macでは、ショートカットは⌘+です。。または、[ファイル]> [プロジェクト構造]に移動します。
Tomanow 2016

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 Managerから。すでにダウンロードされている場合:

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 Buttonをクリックして、ダイアログを開きます。

ここに画像の説明を入力してください

[SDKプラットフォーム]をクリックして、Android 6.0がダウンロードされているかどうかを確認します。

そうでない場合は、最初にダウンロードしてください。ダウンロードが完了したら、をクリックしますApply

ここに画像の説明を入力してください

次に、設定からプロジェクトに変更を適用する必要があります。次にCtrl+ Alt+ Shift+Sを押して設定を開きます

  1. リストからアプリをクリックします。
  2. プロパティをクリック
  3. コンパイル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 2016

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パッケージを削除したため、サーバーリクエストに使用する場合は、このリンクに記載'org.apache.http.legacy'build.gradleれているようにuseLibrary をに追加する必要があります。

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 ') を使用し、compile' com.android.support:appcompat-v7:23.0.0 'のような異なるサポートライブラリを使用していました。下の画像であなたを見せて

ここに画像の説明を入力してください

これは、「android.widget.Material ...」の問題を引き起こしていました。次にコンパイル「com.android.support:appcompat-v7:22.0.1」のようなサポートライブラリに同じバージョンを使用し 、そのDONEを実行しました。(下のスクリーンショットであなたを示しています)

ここに画像の説明を入力してください


9

プロジェクトを最新バージョンでコンパイルして、SDKから更新およびインストールする必要があります。プロジェクトをsync project with Gradle fileButton と同期します。
既存のバージョンを続行することもできますが、画像の下で適切にインストールされていることを確認して、適切にインストールされている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のバージョンは、サポートライブラリのメジャーバージョンと一致している必要があります。これが問題の解決策です。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で確認できます。 ここに画像の説明を入力してください


6

私の場合、それはグーグルプレイサービスのより高いバージョンでした。8.0.0ではなく7.0.0に設定しましたが、すべて問題ありませんでした。


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

これが私を助けました:特定のAndroidプラットフォームの追加

何を行うべきであることは以下のとおりです。...私の場合はそれがだったcordovaが、同じことはに関連しているionicphonegapそしてこれらのような他のフレームワーク:

  1. プロジェクトにインストールされているすべてのプラットフォームを一覧表示しますcordova platform list。次のようなものが表示されます。

ここに画像の説明を入力してください

  1. Androidプラットフォームを削除しますcordova platform remove android

  2. 次に、特定のAndroidプラットフォームを追加しますcordova platform add android@5.0.0

幸運を!:)


3

同じ問題が発生しました。各サブモジュールのgradle.buildを最新のコンパイラバージョンに更新することで問題を解決しました。


2

すべてが素晴らしいですが、SDKビルドツールをダウンロードする場所を説明した人はいませんでした

すべてが素晴らしいですが、SDKビルドツールをダウンロードする場所を説明した人はいませんでした


1

別の解決策:移動

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

.aar7-zipまたはwinrarでファイルを開き、resフォルダーでフォルダーを削除values-23して変更を保存します。


1

モジュール:アプリ(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);
    }


}


1

Android Studioをアップグレードします。

Android Studio 1.3.1でこの問題が発生しましたが、他の回答はどれもうまくいきませんでしたが、1.5.1にアップデートした後、問題はありませんでした。


1

phonegap(cross-platform)を使用していて、上記と同じ問題が発生した場合は、以下のコマンドを使用してandroidプラットフォームを削除してください。

電話ギャッププラットフォームは、Androidを削除します

もう一度追加します。

電話ギャッププラットフォームアンドロイドを追加

その後、問題は解決しました。


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.