web-dev-qa-db-ja.com

appcompat-v7:21.0.0 ':指定された名前に一致するリソースが見つかりませんでした:attr' 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'.

これをどのように修正しますか?

371
loeschg

loeschg の答えは絶対に正しいですが、私はそれについて詳しく説明し、すべてのIDEの解決策を示します(Eclipse、IntellJおよびAndroid St​​udio)エラーがわずかに区別される場合でも。


前提条件

SDKマネージャーを使用して、最新のextrasAndroid 5.0 SDKをダウンロードしたことを確認してください。

Picture of the SDK Manager


Android Studio

アプリモジュールのbuild.gradleファイルを開き、compileSdkVersionを21に変更します。基本的にtargetSdkVersion SDK-Versionを21に変更する必要はありませんが、常に推奨されるため、 最新のAndroid Build-Versionをターゲットにする
最終的に、gradle-fileは次のようになります。

Android {
    compileSdkVersion 21
    // ...

    defaultConfig {
        // ...
        targetSdkVersion 21
    }
}

後でプロジェクトを必ず同期してください。

Android Studio Gradle Sync reminder


日食

Eclipseでv7-appcompatを使用する場合、ライブラリプロジェクトとして使用する必要があります。 * .jarを/libsフォルダーにコピーするだけでは不十分です。プロジェクトを適切にインポートする方法を知るには、 this(クリック)developer.Android.comのステップバイステップチュートリアルをお読みください。

プロジェクトがインポートされるとすぐに、/resfolderの一部のフォルダーが次のようなエラーのために下線が引かれていることがわかります。

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-19からtarget=Android-21に変更することだけです。
その後、Project --> Clean...を実行するだけで、変更が有効になります。


IntelliJ IDEA(Gradleを使用しない)

Eclipseと同様に、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 moduleを右クリック-> Open Module Settings(F4)->[Dependency Tab]Select Android AP​​I 21 Platform fromからドロップダウン->適用

Select API 21 Platform

その後、プロジェクトを再構築するだけで(ビルド->プロジェクトの再構築)、準備完了です。

596
reVerse

Build.gradleファイルでcompileSdkVersionを21に設定していないためです。 targetSdkVersionを21に変更したいと思うかもしれません。

Android {
    //...
    compileSdkVersion 21

    defaultConfig {
        targetSdkVersion 21
    }
    //...
}

これには、最初に最新のSDKアップデートをダウンロードしておく必要があります。

Android Studio SDK Manager

すべてのアップデート (Android Support Library/Repositoryもアップデートすることを忘れないでください)をダウンロードし、compileSdkVersionをアップデートしたら、Gradleプロジェクトを再同期します。

編集:Eclipseまたは一般的なIntelliJユーザー向け

ReVerseの答えを見てください。彼は非常に徹底的なウォークスルーをしています!

123
loeschg

`以下の手順に従ってください:

この問題を解決するには、

1. appcompat_v7ライブラリを右クリックして[プロパティ]を選択します。

2.次に、[Androidオプション]をクリックし、[プロジェクトビルドパス]を[Android 5.0](APIレベル21)に設定します。

3.appcompat_v7ライブラリの下のproject.propertiesファイルに移動します。

4.プロジェクトのターゲットを次のように設定します。target = Android-21

5.Now Clean + appcompat_v7ライブラリとあなたのプロジェクトをビルドします。

22
madhu sudhan

ターゲットAPIとしてAPI 21を使用したくない場合、したがってMaterialテーマを使用したくない場合は、API 19に属する古いリビジョンを使用する必要があります。

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

これはまたあなたの問題を解決するのを助けます、それはあなたが達成したいものだけに依存します。

12
vandus

私はplay-services:5.0.89でこの問題に遭遇しました。 6.1.11にアップグレードすると問題が解決しました。

10
pepyakin

Android Studioでは、compileSdkVersiontargetSdkVersion19に設定しようとしていました。

私の解決策はbuild.gradleの下の部分を から thisに置き換えることでした。

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.+'
}
8
Gianfranco P.

自分のワークスペースに別のプロジェクトを追加し、マニフェストファイルでそのプロジェクトからアクティビティを参照しようとしたところ、このエラーが発生しました。問題は、ライブラリを誤って参照していたことです。これは私が問題を解決した方法です:

  • プロジェクトを右クリック
  • プロパティを選択
  • 左側のメニューでAndroidをクリックします
  • 追加をクリック
  • 図書館プロジェクトを選択してください

Jarファイルが Android Dependencies フォルダーに移動し、このエラーが修正されました。

3
live-love

最新のgradleプラグインにアップグレードすると問題が解決します。

classpath 'com.Android.tools.build:gradle:0.13.+'
2
avianey

Eclipseのワークスペースに2番目のプロジェクトを作成した後、私はこの問題を抱えていました。私はそれが私が異なるSDKバージョンでそれを作成し、そしてこれがAndroid-support-v7-appcompatライブラリを上書きしたためであると信じています。

私はすべてをきれいにしようとしましたが、役に立ちませんでした。最終的に、project.propertiesを編集してtarget = Android-21を変更し、私のプロジェクトをAndroid 5.0に設定するという上記の提案は修正されました。

2
formica

Compile SDKのバージョンをAPI:21からAPI:16に変更したときにも同じエラーが発生しました。問題は、 appcompat versionでした。 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バージョンの古いバージョンがあることを確認してください。 enter image description here

2
mili

私がお勧めしているものは次のとおりです。

- ダウンロードしたことを確認してください。

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

- ADTの再ダウンロード

あなたのプロジェクトのセキュリティコピーを作成します。

- インポートするADT、ワークスペース、およびプロジェクトは同じディスク(C:/など)にある必要があります。

  1. 今すぐアプリcompatとあなたのプロジェクトを削除します。

  2. Eclipseの場合:「ファイル」>「インポート」>「Android既存プロジェクト」>「次へ」>「ブラウズ」(ADTがあるフォルダー)/ sdk/extras/Android/v7/appcompat>「インポート」>「完了」

  3. Eclipse Package Explorerで、Android-support-v7-appcompat/libs /の2つのJARを作成します。右クリック> Build Path> Build Pathに追加

  4. Libs/folderを右クリックして> Buil Path> Build Pathの設定を選択し、この2つのJARをチェック> OK

  5. 上部Eclipseバー>プロジェクト>クリーン

  6. プロジェクトをインポート>ファイル>インポート>プロジェクトを参照>完了

  7. さて、プロジェクトファイルを右クリックし、Android-support-v7-appcompat>プロパティ> Android>そして表示される最新のAPIを選択> OK

  8. プロジェクトファイルを右クリック> [プロパティ]> [Android]> [追加]> [Android-support-v7-appcompat]

  9. 上部Eclipseバー>プロジェクト>クリーン

2
juldeh

私はすべてを最新の状態に保ち、それでもまだこのエラーに遭遇しました。理由はわかりませんが、イメージが奇妙な方法で破損したと思い、イメージを置き換えた後にエラーを取り除きました。別の画像を試してみる価値があるかもしれません:)

2
DoruChidean

私の問題は、私のプロジェクトが参照している他のライブラリがあり、それらのライブラリが別のバージョンのappcompatを参照していたことです。これは私が問題を解決するためにしたことです:

(これをする前にあなたのプロジェクトをバックアップするべきです)

1)すべてのappcompatレイアウトフォルダを削除しました(例:/ res/layout-v11)。

2)それから生じた問題、通常menu.xmlのエラーを解決しました

3)メインプロジェクトに戻ってappcompatライブラリを追加し、きれいにしてください。

1
tricknology

Androidスタジオ(またはEclipse)でプロジェクトをきれいにしてください。

それはあなたの問題を解決するはずです

1
Brendon Sled