2016-07-05 9 views
0

私はJoda Timeクラスに依存するいくつかのユーティリティメソッドを含むAndroid Studioにライブラリ(aar)を作成しました。私は自分のGradleファイルに次のコード行でjcenterからjcenterの依存関係はaarライブラリーにコンパイルされていますか?

コンパイル「:ジョダ-時間:ジョダ時2.9.4」を、依存関係を使用しています、私はその後、民間のMavenリポジトリに私のライブラリを追加

をし、新しいAndroidプロジェクトを作成し、このレポから自分のライブラリを追加しました。

私は、私は次のエラーを取得する新しいプロジェクトに私のライブラリのメソッドを使用しようとすると: -

java.lang.NoClassDefFoundErrorが:org.joda.time.DateTime

私は戻ってみましたjcenterを使ってjoda時間を追加するのではなく、.jarファイルを自分の 'libs'フォルダに直接追加しました。今回は新しいプロジェクトでメソッドを試してみましたが、上記のエラーは発生しませんでした。

これは、jcenterからインクルードされたときに、依存関係が実際にaarファイルにコンパイルされないことを意味しますか?そうする方法はありますか?

答えて

0

AARファイルには、コンパイルされたデックスコード、マニフェスト(部分)およびライブラリのリソースが含まれています。 joda-time用のjarファイルをプロジェクトにコピーすると、AARに組み込まれます。 gradle依存関係を使用する場合、gradle(したがってAndroid Studio)はAARを構築するためのjoda-timeライブラリを解決する方法を知っていますが、それはそれです。あなたのAARがjcenterに公開されているので、joda-timeを依存関係としてリストするAARのためのmavenマニフェストが必要です。その後、プロジェクトはあなたのライブラリだけを依存関係としてリストすることができ、joda-timeへの依存関係はgrableによって解決されます。(壁紙のサポートによって)

+0

これはとても感謝しています。私はmaven-publishを使っていましたが、.aarアーティファクトを公開していました。私はこれに依存関係を追加し、それは働いた。 – omelette

関連する問題