1. ホーム
  2. アンドロイド

Error:(30, 0) 引数 [ディレクトリ 'libs'] のメソッド implementation() が t のオブジェクトで見つかりませんでした。

2022-02-28 03:30:54
<パス

プロジェクトの依存関係としてライブラリを統合する場合、プロジェクトアプリで次のようなエラーが発生することがあります。
org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler タイプのオブジェクトで、引数 [ディレクトリ 'libs'] に対する implementation() メソッドが見つかりませんでした。
ファイルを開く
図のように

解析結果 この問題は、使用しているGradleのバージョンが低く、例えばGradle2.2.2では実装をサポートしていないことが原因であり、gradle2.2.2でサポートするコンパイルに置き換える必要がある。従って、エラーが見つからない場合は、Gradleが3.0.1などの高バージョンで、コンパイルに対応していないことが考えられますので、実装やapiリファレンスに置き換える必要があります。
つまり、Gradle 2.2.2がコンパイルに対応しているのは
Gradle 3.0.1では実装とapiに対応しています
解決策
app/build.gradle の dependencies の implementation を compile に、testImplementation を testCompile に、androidTestImplementation を androidTestCompile に置き換えてください。その結果、以下のようになりました。

技術的な追加ポイント:実装とapiの説明
実装は、コンパイル時に使用する依存関係を隠すことができ、実行時にすべてのモジュールから依存関係が見えます。ただし、すべてのリモート依存関係(リモートmavenライブラリ)の場合、実装は依存関係を隠さない。

apiは自身の依存関係を隠すことができないので、コンパイルと一致する。

例:アプリはライブラリAに依存し、ライブラリAはライブラリBに依存する。

<テーブル ライブラリAの場所 ライブラリーBの場所 アプリはライブラリBのクラスにアクセスできるのか 依存関係を隠蔽する効果が得られるか ローカル ローカル いいえ はい ローカル リモート いいえ はい リモート リモート はい いいえ

Googleはビルド時間を短縮する目的で、実装とapiを導入した。
依存関係が隠されている場合、ライブラリが変更されると、そのライブラリとそれに依存するモジュールのみを再コンパイルする必要があります。依存関係が隠されていない場合、その依存関係のチェーンにあるすべてのモジュールの再コンパイルが必要です。