试图让 retrolambda 在我的项目中工作时遇到大问题。那里有很多性问题和解决方案,但我没有发现任何不诉诸将multiDexEnabled
标志添加到成绩文件中的方法。
我收到以下错误。
错误:任务':mobile:dexDebug'的执行失败。com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/bin/java'' 完成非零退出值 2
为了解决这个问题,我可以添加multiDexEnabled true
并且这可以工作,但是它也会在我的构建时间上增加 1 分钟,这对于开发来说是不可接受的。
还有其他方法还是我不应该使用 Retrolambda?
编辑添加了 build.grade 代码。
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.myapplication"
multiDexEnabled true
minSdkVersion 11
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.google.android.gms:play-services-maps:7.5.0'
compile 'com.google.android.gms:play-services-wearable:7.5.0'
compile 'com.google.android.gms:play-services-location:7.5.0'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:design:22.2.1'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.android.support:support-annotations:22.2.1'
compile 'com.jakewharton:butterknife:7.0.1'
compile 'joda-time:joda-time:2.7'
/*Graphs*/
compile 'com.androidplot:androidplot-core:0.6.1'
/*Parse*/
compile project(':ParseLoginUI')
/*Images*/
compile 'com.squareup.picasso:picasso:2.3.3'
compile 'com.makeramen:roundedimageview:2.1.0' // https://github.com/vinc3m1/RoundedImageView
compile 'io.reactivex:rxandroid:0.25.0'
}
编辑将我的 JDK 版本更改为 1.7 错误后
错误:任务“:activity-manager:compileDebugJava”执行失败。
使用 java 5、6 或 7 运行 gradle 时,必须使用属性 retrolambda.jdk 或环境变量 JAVA8_HOME 将路径设置为 jdk8
因此,在我的 .bash_profile 中,我像这样设置环境变量:
export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA8_HOME=$(/usr/libexec/java_home)
export JAVA7_HOME=$(/usr/libexec/java_home -v 1.7)
现在,当我在终端中执行以下操作时,echo JAVA8_HOME
它会找到正确的路径,但是我的 Gradle 仍然没有找到它。我在我的成绩文件中像这样测试它。
println("***************** ---------- *******************")
println("JAVA_HOME: " + System.getenv("JAVA_HOME"))
println("JAVA7_HOME: " + System.getenv("JAVA7_HOME"))
println("JAVA8_HOME: " + System.getenv("JAVA8_HOME"))
println("***************** ---------- *******************")
所有这些输出的结果都是空的。
编辑我还用以下内容覆盖了 retrolambda 标记。
retrolambda {
jdk "/Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home"
oldJdk "/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home"
javaVersion JavaVersion.VERSION_1_7
}
然后,我返回以“以非零退出值 2 结束”的方式获取原始异常,但现在在项目设置中设置了 JDK 版本。
错误:任务':mobile:dexDebug'的执行失败。
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java'' 完成非零退出值 2