1

Android Studio と gradle を 3.1 に更新した後、すべてのcompileステートメントをimplementation. しかし、私がビルドすると、Androidスタジオはサードパーティのライブラリにあるインポートを解決できません.

シナリオ: メイン プロジェクトは、jar ファイルもインポートするサブモジュールをインポートします。

jar ファイルからメイン プロジェクトにクラスをインポートしようとすると、Android Studio で解決できません。

メイン プロジェクトに jar ファイルを依存関係として追加せずに、単一のファイルをインポートするにはどうすればよいですか?

4

3 に答える 3

2

api代わりに使用する必要があります。これは新しいものであるか、メイン プロジェクトに直接compile依存関係があります。に変更するだけで問題は解決しますが、ビルド時間を改善するために可能な限り使用することを検討してください。implementationapiimplementation

apiimplemenation ここの違いを見ることができます。

于 2018-04-03T12:01:54.503 に答える
1

@nongthonbam-tonthoi の回答は正しいですが、その理由は説明されていません。

短縮版

実装- この依存関係を他のモジュール (このモジュールに依存する) から隠します。Bに依存する場合、 usingAで宣言された dep は使用できません。Aimplementation

api - このモジュールに依存する他のモジュールでこれを使用できるようにします。つまり、GSONをモジュールの dep として追加すると、依存する他のすべてのモジュールは再度宣言せずにGSONAを使用できます。apiimplementationA

ロングバージョン

implementation特定のモジュールのみの依存関係を宣言する方法です。これが意味することは、依存関係はその特定のモジュールでのみ使用できるということです。compile一方、依存関係を他のモジュールに「リーク」するため、 dep が他のモジュールに持ち込むクラスをインポートして使用できます。この動作が必要な場合、それを行う新しい方法は を使用することapiです。

この変更は、特にマルチモジュール プロジェクトを対象としています。これは、モジュールが変更されていない場合にビルド中にモジュールを再コンパイルすることを gradle が回避できるようにするためです。

ただし、古いプロジェクトから移行する場合は、コンパイルを (ab) 使用して、明示的に再度宣言せずに、他のモジュールで宣言された依存関係を使用している可能性があります。

引き続き使用できますが、compile非推奨であり、すぐに削除されることに注意してください。

より深い説明については、こちらを参照してください。

于 2018-04-03T14:05:59.393 に答える
0

build.gradle (Module:app)SDK のバージョンを編集して次のように変更します27.1.1

defaultConfig {
        applicationId "com.projectname"
        minSdkVersion 15
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

implementation 'com.android.support:appcompat-v7:27.1.1'

プロジェクトを再構築し、Androidスタジオを再起動します

于 2018-04-06T17:51:06.557 に答える