3

ビルド時に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

4

1 に答える 1