で独立して、またはアプリケーションの依存関係として構築しているかどうかを検出:働く他のプロジェクトのための1つのAAR、にすべてのライブラリモジュールをマージする、android-fat-aarを使用してライブラリは私のプロジェクトは、以下の構造を有するのGradle
--\Project
--\Library Module A
--\Library Module B
--\Library Module C
--\Application Module
- 私を魔法のように。
私のライブラリをテストするために、ライブラリを含むアプリケーションモジュールもあります。最新のGradleのバージョンと脂肪AARバージョンにアップグレードした後
、アプリケーションモジュールを構築することは不可能である
Github Issue - com.android.dex.DexException: Multiple dex files define ...
ライブラリモジュールBをマージするとライブラリモジュールCに、これらの依存関係を、をの代わりにに、を埋め込むように宣言する必要があります。
dependencies {
testCompile 'junit:junit:4.12'
compile('com.android.support:support-v4:10.0.1')
embedded project(':Library-Module-B')
embedded project(':Library-Module-C')
}
前述したように、これはライブラリを単独でビルドすると機能しますが、アプリケーションモジュールをビルドしても機能しません。
私はこのエラーが発生した理由をこれらのライブラリのいずれもログ出力に応じて複数回含まれていなかっますので、私は小さな回避策を考え出すことは、トリックを行うだろうと思ったので、知っているドント:
-
ライブラリが(それが再び動作するため)または脂肪AAR
に設定されているデフォルトの依存関係にすべての埋め込み依存関係を追加できるようにすることも可能trueの場合にコンパイルする組み込み独立か
android-fat-aar
を聞いたことがないと本当に慣れていないんだと
ありがとうございます。私は、afterEvaluateメソッドに埋め込まれた依存関係をコンパイルの依存関係に追加しようとしましたが、動作するようです。問題は、洗練されたソリューション(fat-aarを変更する)が必要な場合、アプリケーションモジュール名をハードコードできないということです。何らかの理由でモジュールに関する情報を取得するソリューションが必要です。ビルドプロセスを開始します –
'afterEvaluate'では?私は 'afterEvaluate'について何も言わなかった。どのようにあなたのチェックをしていますか、この時点で 'taskGraph'は準備ができていないかもしれません。モジュールはビルドプロセスを開始せず、実行するタスクを呼び出してビルドプロセスを開始します。どのタスクが実行され、アプリケーションがビルドされているかどうかをチェックしています。ライブラリモジュールからアプリケーションモジュールを分離し、アプリケーションモジュールをスタンドアロンにしたり、他のアプリケーションと同様にライブラリを使用したりすることも考えられます。 – Vampire