Gradle-エラー引数のメソッドimplementation()が見つかりませんでした[com.android.support:appcompat-v7:26.0.0]


87

Android Studioで既存のAndroidプロジェクトを開こうとしていますが、Gradleはエラーなしでアプリをビルドできません

エラーアンドロイドスタジオは投げ続けます

Error:(74, 1) A problem occurred evaluating project ':app'.
> Could not find method implementation() for arguments 
[com.android.support:appcompat-v7:26.0.0] on object of type 
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

私の問題を理解するのに役立つbuild.gradleの私のコード私の依存関係

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')

// google & support
implementation "com.android.support:appcompat-v7:$supportVersion"
implementation "com.android.support:cardview-v7:$supportVersion"
implementation "com.android.support:recyclerview-v7:$supportVersion"
implementation "com.android.support:design:$supportVersion"
implementation "com.android.support:palette-v7:$supportVersion"
implementation "com.android.support:customtabs:$supportVersion"
implementation "com.android.support:support-v4:$supportVersion"
implementation 'com.google.android.exoplayer:exoplayer:r2.0.4'

// utils
implementation 'com.github.bumptech.glide:glide:4.0.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
implementation 'com.koushikdutta.ion:ion:2.1.7'
implementation 'com.github.Commit451:bypasses:1.0.4'
implementation 'com.jakewharton:butterknife:8.8.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.0'
implementation 'com.drewnoakes:metadata-extractor:2.9.1'
implementation "com.orhanobut:hawk:2.0.1"

}

問題の解決にご協力ください


5
Android Studio 3.0を使用していますか?
Saurabh Thorat 2017

私はアンドロイドに不慣れです。しかし、はい、以前のエラーがそれについて不平を言っていたので、私は3.0にアップデートしました。
コール2017

1
いいえ、android studio 2.3.3
cole

9
置き換えimplementationてみてくださいcompile
Saurabh Thorat 2017

うん、それはうまくいく..ありがとう
コール2017

回答:


87

交換してくださいimplementationcompile

compile最近廃止されimplementationまたはに置き換えられましたapi


17
タイトルには「メソッドimplementation()が見つかりませんでした」と書かれているため、「コンパイル」の代わりに「実装」を使用しても役に立ちません(エラーメッセージが完全に間違っている場合を除く)
MarioKlebsch19年

Artifactoryリポジトリにあるivyモジュールの「実装」をすでに使用しています。答えは役に立ちません
GaVaRaVa

剥奪の事実は正しいですが、ヘッダーに表示されるエラーメッセージにはつながりません。Sunil Kumarの答えを調べてください:あなたは間違ったファイルを編集しています。確認された場合は、誤解を招く可能性があるため、この回答に反対票を投じてください。TY
FrankKrumnow

42

3.*.*「実装」を使用する前に、Gradleのバージョンが以上であることを確認してください。

依存関係の下でプロジェクトレベルのGradleファイルを開きます。

dependencies{
    classpath 'com.android.tools.build:gradle:3.1.2'
}

'gradle-wrapper.properties'ファイルを開き、distributionUrl:を設定します。

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

または最新バージョン。

プロジェクトを同期します。これで問題が解決することを願っています。


25

を使用するには、少なくともGradle3.4以降を使用する必要がありますimplementationcompileビルド時間が遅くなる可能性があるため、非推奨の使用を継続することはお勧めしません。詳細については、公式のAndroid開発者ガイドを参照してください。

モジュールが実装の依存関係を構成すると、コンパイル時にモジュールが他のモジュールに依存関係をリークしたくないことをGradleに通知します。つまり、依存関係は実行時にのみ他のモジュールで使用できます。apiまたはcompileの代わりにこの依存関係構成を使用すると、ビルドシステムが再コンパイルする必要のあるプロジェクトの量が減るため、ビルド時間が大幅に改善される可能性があります。たとえば、実装の依存関係がAPIを変更した場合、Gradleはその依存関係とそれに直接依存するモジュールのみを再コンパイルします。ほとんどのアプリおよびテストモジュールは、この構成を使用する必要があります。

https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations

更新: compile 2018年末までに削除されるため、implementation今だけ使用するようにしてください:

警告:構成 'compile'は廃止され、 'implementation'に置き換えられました。2018年末に削除されます


2
私はすでにGradle4.4を使用していますが、まだ突然この問題が発生しています。
無限ループ2018

1
そして、gradleプラグインのバージョンは何ですか?@InfiniteLoops
donfuxx

プラグインのバージョンは171.4249.39です。tools.build:Gradleバージョンは3.0.1
無限ループ

Android Studioで、新しいプロジェクトを最初から作成する場合:そのgradleファイルは使用しますimplementationcompile?@InfiniteLoops
donfuxx

1
私にとって、違いはミリ秒でした。それが壊れていないのになぜ何かを台無しにするのですか?
user1608385 2018

20

これらの依存関係をandroid / build.gradleではなくandroid / app /build.gradleに追加していることを確認してください


2
確認済み。これが正解です。上記のエラーメッセージは、間違ったbuild.gradleファイルに依存関係を追加したときに表示されます。
FrankKrumnow

@FrankKrumnow他の理由も考えられるため、確認できません。
Sreekanth Karumanaghat

2
これは私の問題だったので、正しいファイルに追加していることを確認する価値があります!
Josh Undefined

同意します。これが正解です。どうもありがとう!
ミトラコフアルテム

これも私の問題でした。2日間かけて修正を試みた後です。以前のバージョンのCordovaでは依存関係がandroid / build.gradleに存在していたため、これは私にとって非常に混乱していました。
SigmaSteve

9

適用プラグインを変更: 'java'プラグインを適用する: 'java-library'

java-library-plugin


受け入れられた答えが最も人気があるように見えますが、それだけが正解ではありません。私の場合、「apply plugin: 'java-library」がないため、まったく同じ例外が発生しました(もちろん、異なるオブジェクト)。したがって、この可能な解決策を追加してくれた@ xiqing-lauに感謝します。
pfurbacher

5

とてもばかげていますが、誰かが私のような状況に陥った場合に備えて、私の経験を共有したいと思います。

変更したかどうかを確認してください:compileSdkVersion->implementationSdkVersion誤って


「誤って」とは、compileSdk ..からimplementationSdk ..に変更することは想定されていないことを意味します。compileSdkVersionを維持することになっていますか?---このコメントを読んでいる人は誰でも答えは-はい、stackoverflow.com
a / 49755251/4132182 –ZenVentzi19年

これは解決策ではありません!コンパイルを実装に変更することは、依存関係にのみ適用されます。
Jorgesys

2

あなたのコード

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')

に置き換えます

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')

2

ここで述べたように、https: //stackoverflow.com/a/50941562/2186220、「実装」を使用している間は、gradleプラグインバージョン3以降を使用してください

また、のgoogle()リポジトリを使用しますbuildscript

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

これらの変更により、問題が解決するはずです。


2

あなたを交換しimplementationclasspath。それはうまくいくはずです。


こんにちはナンダー、私は私の答えが受け入れられたものと似ているとは思わない。その上、私は私のために働いていませんでした、それで私は働いたものを投稿し、他の開発者も助けることができました。
エドワードムパンザ

こんにちはエドワード、すみません、私は読み間違えました。あなたの答えは確かに異なります。
Nander Speerstra

1

implementationルートレベルのbuild.gradleからモジュールレベルのbuild.gradleに移動しました。それは問題を解決します。


0

実装が定義されていない場合は、間違ったファイルに書き込んでいます。Unity 2019+では、正しいファイルはmain template grandle他のファイルではなく、です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.