2016-01-25 27 views
5

のAndroidプロジェクト(のGradle)は、メインアプリケーションモジュールを持っています アプリ - アンドロイドアプリケーション(プラグイン適用されます: 'com.android.application')を とJavaモジュール: ネットワークAndroidのアプリケーション+ Javaのモジュール(Javaの1.8)

Javaモジュールは、デフォルトでは、ソースコードの互換性1.8を持っていると私は本当にため、ラムダ式のそれを持ってしたいネットワーク: -は( 'Javaのプラグインを適用します)。

しかし、デフォルトではAndroidアプリケーション1.7です。アプリを構築することはできません。もちろん 私は私のアプリでretrolambdaを使用 - アンドロイドモジュールが、のためのプロジェクトがコンパイルされません。私は私のJavaモジュールを作れば

Error:com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)

Error:Execution failed for task ':app:transformClassesWithDexForDebug'. 
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 

すべてが良いコンパイル

apply plugin: 'java' 
sourceCompatibility = 1.7 
targetCompatibility = 1.7 

しかし、この場合、ラムダ式は使用できませんが、私はそれが必要です。

  1. ネットワークモジュールではないのjavaが、アンドロイド・モジュールおよび使用retrolambda を行います(しかし、私はの.jarはそれので、このモジュールから.aarない作るつもりです:

    は、私が唯一の次のソリューションを参照してくださいする必要があり のjava)

  2. 私はあまりにも ラムダなしrxJavaで愚かなコードが一致のためにそれを使用したい私のJavaモジュール将来的に(.jarファイル)(ただし、 にラムダ式を使用しないでください)

私の最善の解決策は、私のJavaモジュールのretrolambdaのようなものでしょう。私はそのようなことを試みたが、retroambdaの依存関係(プラグインを適用する: 'me.tatarka.retrolambda')はコンパイル時に影響を受けなかった。 または、retrolambdaのようなものでJava 1.7を使用してください。 しかし、gradleファイルにはセクションandroid {...}があり、compileOptionsを設定することはできません。

これを行う方法?私はFunctionalIterablesのために、あなたのGradleファイルがそのようになるはずでした何に基づいて

+0

私はラムダを使用していますが、retrolambdasを使用して、Java 7でコンパイルしてアンドロイドで使用するライブラリを持っています。あなたはここにグラデルファイルとライブラリを見ることができます:https://github.com/smaspe/FunctionalIterables – njzk2

答えて

3

buildscript { 
    repositories { 
     jcenter() 
    } 

    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.2.3' 
    } 
} 

repositories { 
    jcenter() 
} 

apply plugin: 'java' 
apply plugin: 'me.tatarka.retrolambda' 

retrolambda { 
    jdk System.getenv("JAVA8_HOME") 
    oldJdk System.getenv("JAVA7_HOME") 
    javaVersion JavaVersion.VERSION_1_6 
} 

(私のGradleファイルの残りの部分はライブラリのみを公開に関連している)

すべてがRetrolambdaを必要としません出力ジャーを適切なJavaバージョンをターゲットにする。

+0

Tnx!私にとってそれは実際には機能しません、私はまだコンパイルしないことを意味しますが、あなたが上記のようにretrolambdaで.jarを作成し、この場合はこのjarを含めると動作します。 –

関連する問題