2017-01-02 5 views
2

私はAndroidアプリケーション(Androidスタジオで動作しています)を持っています。これは2つのモジュールで構成されています: - 低レベルの純粋なJavaモジュールがあります(モジュールAと呼ぶ)。 - その上に、AndroidアプリケーションであるモジュールBがあります。いくつかの処理ではmoduleAに依存しています。Androidスタジオ:マルチモジュールプロジェクトにおける外部JARのリンク

これは問題なく動作しています。

モジュールAは外部ライブラリを呼び出す必要があります。私はJARファイルをダウンロードしてmoduleA/libsフォルダに入れました。 このlibsフォルダはmoduleAのgradle依存関係で参照されるため、コンパイルはOKです。しかし、実行時に例外があります:にjava.lang.ClassNotFoundException:によって引き起こさ

致命的な例外は、パス上のクラス「XXXX」を見つけることができませんでした:DexPathList

私はAPKが含まれていないことを見てきましたこの例外が発生するのは正常なのでJARファイルです。

同じJARファイルをmoduleB/libsにコピーすると問題なく動作しますが、プロジェクトではJARファイルが2回あります。これを処理するクリーンなソリューションは何ですか? 私はそれがgradleで解決できると思いますが、私はどのようにわかりません。

は、私はこの問題を解決することができた 非常オリヴィエ

+1

jarライブラリをaarに変換することは回避策です:https://discuss.gradle.org/t/including-a-java-project-into-an-android-library-project-does-not-include-transitive-file依存関係/ 2442/8 –

答えて

0

、ありがとうございました。 Gradleの読んこれは私をたくさん助けた: 代わりmoduleA/libsにフォルダ内のJARファイルを置くことで、私は、プロジェクトをクリックすることで、AndroidのメーカーでJARファイルをインポートしています http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Creating-a-Library-Project

ここでは、私がやっていることです右クリック - >新規 - >モジュール。次に "Import .JAR/.AAR package"をクリックしました。 これは、JARファイル+グラデルスクリプトを含むモジュールを作成しました。

その後、moduleAのGradleのスクリプトでは、私は依存関係でこれを追加しました: コンパイルプロジェクト(パスを:「:name_of_the_jar_file」)

私はすべてを再構築し、それが動作します。 JARファイルは現在APKに存在し、実行時にクラッシュは発生しません。

関連する問題