ビルド時に2つのclasses.jarを生成する2つの純粋なJavaプロジェクト(:java:libs:proj1、:java:libs:proj2)があります。「結合された」2つのjarには、dex jar、つまりclasses.dexを含むJARファイルに変換したい正確なクラスが含まれています。
2 つの純粋な Java プロジェクトを、classes.dex を含む単一の JAR に変換するのを手伝ってくれる人はいますか?
これが私がやってみたものです。
1) 別の Android ライブラリ プロジェクトを作成し (プラグイン: 'android-library' を適用)、依存関係として 2 つの Java プロジェクトを含めます。
apply plugin: 'android-library'
dependencies {
compile project(':java:libs:proj1')
compile project(':java:libs:proj2')
}
ただし、このアプローチでは、dex ファイルは生成されません。代わりに、2 つのプロジェクトの .class ファイルのみを含む「.aar」ファイルを生成します。この .aar ファイルを dex に変換できれば完璧ですが、「android-library」プラグインには「dex」タスクがないようです。
2) Android プロジェクトを作成し (プラグイン: 'android' を適用)、2 つのプロジェクトを依存関係として含めます。(上記と同様ですが、「android-library」の代わりに「android」を使用します)。
apply plugin: 'android'
dependencies {
compile project(':java:libs:proj1')
compile project(':java:libs:proj2')
}
このアプローチでは、必要な dex ファイルが作成されますが、2 つの純粋な Java プロジェクトのすべての依存関係も含まれています。たとえば、私の Java プロジェクトは、JUnit、BouncyCastle、およびその他の外部 Java プロジェクトに依存しています。classes.dex 内に、すべてが含まれていることがわかります。「dex」タスクに依存関係を「推移的に」含めないように指示する方法はありますか?
2 つの Java プロジェクトに直接関連付けられているクラスのみを dex に格納します。簡単な方法があればいいのに:(
ありがとう、J