2017-11-28 19 views
1

同じライブラリを使用する2つのプロジェクトがあります。このライブラリはjarファイルを依存関係として使用しますが、ライブラリのみがjarファイルからクラスを読み取ることができます。 2つのプロジェクトは、jarファイルのクラスにアクセスできません。Androidスタジオ:ライブラリからjarファイルのクラスを読み込むには?

2つのプロジェクトに別々にjarファイルを追加しようとしましたが、プロジェクトレベルとライブラリレベルに矛盾が生じているため、おそらくビルドエラーが発生します。

jarファイルがYouTubeAndroidPlayerApi.jar

   /------------------- Project1 (can't read classes from jar) 
Library(w/ jar) 
       \------------------- Project2 (can't read classes from jar) 

アプローチする方法上の任意のアイデアですか?ありがとう!

+0

"2つのプロジェクトは、jarファイルのクラスにアクセスできません。" - なぜそうではありませんか?それが依存関係として含まれている場合は、それが必要です。 –

+0

あなたのgradleファイルはどのように見えますか?あなたは最新のgradleを持つAndroidスタジオ3.0にいますか? – parkgrrr

答えて

0

gradle 4.1を使用している場合は、ライブラリに.jarをインポートするときには、必ずapiキーワードを使用してください。その後、他のプロジェクトから削除します。例えば

api fileTree(dir: 'libs', include: ['*.jar'])

from the documentation:

モジュールは、それが彼らに利用できるように、Gradleのモジュールは推移、他のモジュールにその依存関係をエクスポートしたいことを知らせるのAPI依存性を含んでいますランタイムとコンパイル時の両方で。この設定はコンパイルと同様に動作します(現在は推奨されていません)。通常、これはライブラリモジュールでのみ使用してください。これは、APIの依存関係が外部APIを変更すると、Gradleはコンパイル時にその依存関係にアクセスできるすべてのモジュールを再コンパイルするためです。したがって、多数のAPI依存関係を持つと、ビルド時間が大幅に増加する可能性があります。依存関係のAPIを別のテストモジュールに公開しない限り、アプリモジュールは実装依存関係を使用する必要があります。

+0

そのトリックをした! – mco

+0

お手伝いします! gradle 4.1への移行は必ずしも単純ではありません。 – parkgrrr

関連する問題