プロジェクトで最新の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の解決策を示します(Eclipse、IntellJおよびAndroid Studio)エラーがわずかに区別される場合でも。
SDKマネージャーを使用して、最新のextras
とAndroid 5.0 SDK
をダウンロードしたことを確認してください。
アプリモジュールのbuild.gradle
ファイルを開き、compileSdkVersion
を21に変更します。基本的にtargetSdkVersion
SDK-Versionを21に変更する必要はありませんが、常に推奨されるため、 最新のAndroid Build-Versionをターゲットにする 。
最終的に、gradle-fileは次のようになります。
Android {
compileSdkVersion 21
// ...
defaultConfig {
// ...
targetSdkVersion 21
}
}
後でプロジェクトを必ず同期してください。
Eclipseでv7-appcompat
を使用する場合、ライブラリプロジェクトとして使用する必要があります。 * .jarを/libs
フォルダーにコピーするだけでは不十分です。プロジェクトを適切にインポートする方法を知るには、 this(クリック)developer.Android.comのステップバイステップチュートリアルをお読みください。
プロジェクトがインポートされるとすぐに、/res
folderの一部のフォルダーが次のようなエラーのために下線が引かれていることがわかります。
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.properties
のAndroid-support-v7-appcompat
ファイルを開き、ターゲットをtarget=Android-19
からtarget=Android-21
に変更することだけです。
その後、Project --> Clean...
を実行するだけで、変更が有効になります。
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 API 21 Platform fromからドロップダウン->適用
その後、プロジェクトを再構築するだけで(ビルド->プロジェクトの再構築)、準備完了です。
Build.gradleファイルでcompileSdkVersion
を21に設定していないためです。 targetSdkVersion
を21に変更したいと思うかもしれません。
Android {
//...
compileSdkVersion 21
defaultConfig {
targetSdkVersion 21
}
//...
}
これには、最初に最新のSDKアップデートをダウンロードしておく必要があります。
すべてのアップデート (Android Support Library/Repositoryもアップデートすることを忘れないでください)をダウンロードし、compileSdkVersionをアップデートしたら、Gradleプロジェクトを再同期します。
編集:Eclipseまたは一般的なIntelliJユーザー向け
ReVerseの答えを見てください。彼は非常に徹底的なウォークスルーをしています!
`以下の手順に従ってください:
この問題を解決するには、
1. appcompat_v7ライブラリを右クリックして[プロパティ]を選択します。
2.次に、[Androidオプション]をクリックし、[プロジェクトビルドパス]を[Android 5.0](APIレベル21)に設定します。
3.appcompat_v7ライブラリの下のproject.propertiesファイルに移動します。
4.プロジェクトのターゲットを次のように設定します。target = Android-21
5.Now Clean + appcompat_v7ライブラリとあなたのプロジェクトをビルドします。
ターゲットAPIとしてAPI 21を使用したくない場合、したがってMaterialテーマを使用したくない場合は、API 19に属する古いリビジョンを使用する必要があります。
compile "com.Android.support:appcompat-v7:19.0.+"
これはまたあなたの問題を解決するのを助けます、それはあなたが達成したいものだけに依存します。
私はplay-services:5.0.89でこの問題に遭遇しました。 6.1.11にアップグレードすると問題が解決しました。
Android Studioでは、compileSdkVersion
とtargetSdkVersion
を19
に設定しようとしていました。
私の解決策は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.+'
}
自分のワークスペースに別のプロジェクトを追加し、マニフェストファイルでそのプロジェクトからアクティビティを参照しようとしたところ、このエラーが発生しました。問題は、ライブラリを誤って参照していたことです。これは私が問題を解決した方法です:
Jarファイルが Android Dependencies フォルダーに移動し、このエラーが修正されました。
最新のgradleプラグインにアップグレードすると問題が解決します。
classpath 'com.Android.tools.build:gradle:0.13.+'
Eclipseのワークスペースに2番目のプロジェクトを作成した後、私はこの問題を抱えていました。私はそれが私が異なるSDKバージョンでそれを作成し、そしてこれがAndroid-support-v7-appcompatライブラリを上書きしたためであると信じています。
私はすべてをきれいにしようとしましたが、役に立ちませんでした。最終的に、project.propertiesを編集してtarget = Android-21を変更し、私のプロジェクトをAndroid 5.0に設定するという上記の提案は修正されました。
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バージョンの古いバージョンがあることを確認してください。
私がお勧めしているものは次のとおりです。
- ダウンロードしたことを確認してください。
- the Lastest SDK Platform from the latest Android version
- Android Suppor Librarie and Repository from EXTRAS
- ADTの再ダウンロード
あなたのプロジェクトのセキュリティコピーを作成します。
- インポートするADT、ワークスペース、およびプロジェクトは同じディスク(C:/など)にある必要があります。
今すぐアプリcompatとあなたのプロジェクトを削除します。
Eclipseの場合:「ファイル」>「インポート」>「Android既存プロジェクト」>「次へ」>「ブラウズ」(ADTがあるフォルダー)/ sdk/extras/Android/v7/appcompat>「インポート」>「完了」
Eclipse Package Explorerで、Android-support-v7-appcompat/libs /の2つのJARを作成します。右クリック> Build Path> Build Pathに追加
Libs/folderを右クリックして> Buil Path> Build Pathの設定を選択し、この2つのJARをチェック> OK
上部Eclipseバー>プロジェクト>クリーン
プロジェクトをインポート>ファイル>インポート>プロジェクトを参照>完了
さて、プロジェクトファイルを右クリックし、Android-support-v7-appcompat>プロパティ> Android>そして表示される最新のAPIを選択> OK
プロジェクトファイルを右クリック> [プロパティ]> [Android]> [追加]> [Android-support-v7-appcompat]
上部Eclipseバー>プロジェクト>クリーン
私はすべてを最新の状態に保ち、それでもまだこのエラーに遭遇しました。理由はわかりませんが、イメージが奇妙な方法で破損したと思い、イメージを置き換えた後にエラーを取り除きました。別の画像を試してみる価値があるかもしれません:)
私の問題は、私のプロジェクトが参照している他のライブラリがあり、それらのライブラリが別のバージョンのappcompatを参照していたことです。これは私が問題を解決するためにしたことです:
(これをする前にあなたのプロジェクトをバックアップするべきです)
1)すべてのappcompatレイアウトフォルダを削除しました(例:/ res/layout-v11)。
2)それから生じた問題、通常menu.xmlのエラーを解決しました
3)メインプロジェクトに戻ってappcompatライブラリを追加し、きれいにしてください。
Androidスタジオ(またはEclipse)でプロジェクトをきれいにしてください。
それはあなたの問題を解決するはずです