@nongthonbam-tonthoi の回答は正しいですが、その理由は説明されていません。
短縮版
実装- この依存関係を他のモジュール (このモジュールに依存する) から隠します。B
に依存する場合、 usingA
で宣言された dep は使用できません。A
implementation
api - このモジュールに依存する他のモジュールでこれを使用できるようにします。つまり、GSONをモジュールの dep として追加すると、依存する他のすべてのモジュールは再度宣言せずにGSONA
を使用できます。api
implementation
A
ロングバージョン
implementation
特定のモジュールのみの依存関係を宣言する方法です。これが意味することは、依存関係はその特定のモジュールでのみ使用できるということです。compile
一方、依存関係を他のモジュールに「リーク」するため、 dep が他のモジュールに持ち込むクラスをインポートして使用できます。この動作が必要な場合、それを行う新しい方法は を使用することapi
です。
この変更は、特にマルチモジュール プロジェクトを対象としています。これは、モジュールが変更されていない場合にビルド中にモジュールを再コンパイルすることを gradle が回避できるようにするためです。
ただし、古いプロジェクトから移行する場合は、コンパイルを (ab) 使用して、明示的に再度宣言せずに、他のモジュールで宣言された依存関係を使用している可能性があります。
引き続き使用できますが、compile
非推奨であり、すぐに削除されることに注意してください。
より深い説明については、こちらを参照してください。