gradle を使用してマルチ プロジェクト ビルドを正しく構成しようとしています。
難しいのは、3 つのプロジェクトがあり、Android アプリケーションと通常の Java8 アプリケーション (実行可能な jar) をビルドしたいということです。したがって、私は Android プロジェクト、Java8 アプリケーション プロジェクト、および両方のアプリケーションが共有する共通コードを持つプレーンな Java プロジェクトを持っています。
次の設定で、両方のアプリケーションをコンパイルできます。
- Android プロジェクトは「com.android.application」プラグインを適用し、Common プロジェクトに依存しています
- Java アプリケーション プロジェクトは「アプリケーション」プラグインを適用し、共通プロジェクトに依存します。
- Common プロジェクトは「java」プラグインを適用します
ラムダ式を使用するために、Android プロジェクトでは retrolambda を使用し、Java アプリケーションでは Java 8 を使用しています。明らかに、Common プロジェクトで完全な Java8 を使用することはできません。Android アプリケーションが壊れてしまうからです。
Common プロジェクトでラムダ式を使用できるようにするには、sourceCompatibility を Java 1.8 に設定する必要があります。ただし、これにより、Common プロジェクトで Java8 Stream API などを使用することも可能になります。その後、Android プロジェクトをコンパイルすると、コンパイル エラーが発生しません。明らかに、Android アプリは実行時にクラッシュします。
したがって、私の質問は次のとおりです。Common プロジェクトを構成して、標準の Java8 アプリケーションと Android アプリケーションで使用できるようにするにはどうすればよいですか。ただし、Android で使用できないものを使用するとコンパイル エラーが発生します。