连接:http://www.jianshu.com/p/84126a1fd15a
一、按照方法1处理会报错
编译器 (1.8.0_91) 中出现异常错误。如果在 Bug Database (http://bugs.java.com) 中没有找到该错误,
请通过 Java Bug 报告页 (http://bugreport.java.com) 建立该 Java 编译器 Bug。请在报告中附上您的程序和以下诊断信息。谢谢。
com.sun.tools.javac.code.Symbol$CompletionFailure: 找不到java.lang.invoke.MethodType的类文件
貌似目前只有Android7.0才支持Java 8,推荐非官方兼容库retrolambda
参考:http://blog.csdn.net/OnlyWenga/article/details/64906641 (有待验证)
二、按照方法2处理,也会报错
Error:Jack is required to support java 8 language features.
Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8.
经过测试需要加上
defaultConfig.jackOptions.enabled = true、
解决方法:
1、app的build.gradle
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.canhui01li.myapprxretrofitdagger"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//支持Java8,这样才能使用Lambda----------
defaultConfig.jackOptions.enabled = true //关键就是这个,可以支持java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//支持Java8,这样才能使用Lambda-------
}
2、其他子model的build.gradle也要引入以下2个地方
apply plugin: 'me.tatarka.retrolambda' //支持Java8-lambda
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Ps: library的model不能加 defaultConfig.jackOptions.enabled = true
完整代码
apply plugin: 'com.android.library'
apply plugin: 'me.tatarka.retrolambda' //支持Java8-lambda
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//支持Java8---------------------
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//支持Java8---------------------
}
3、打开Project的build.gradle,添加
classpath 'me.tatarka:gradle-retrolambda:3.6.1'
例如
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'me.tatarka:gradle-retrolambda:3.6.0' //Retrolambda使用
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
4、File ->Project structure -> JDK loction:导入自己的jdk 1.8 版本
例如
C:\Program Files\Java\jdk1.8.0_91
缺点:
1、感觉编译速度很慢
2、for循环效率。待验证 有些说很慢
学习文章:
在Android项目中使用Java8
http://www.jianshu.com/p/a258d034307c
网友评论