Android Studio 3内置支持Java 8的相关配置

时间:2022-06-01 20:09:43

Android Studio 3开始支持Java 7全部的特性,以及内置支持Java 8部分特性。

原理

Android Studio 3内置支持Java 8的相关配置

Android Studio 3支持Java 8做法是使用称为desugar工具把javac编译后的.class做字节转换,转换为新的.class文件,最后使用dex转换为dex文件。

配置

Android Studio 3使用Java 8需要做以下配置:

1、升级Android的Grad了插件

在项目的build.gradle修改为

buildscript {
    repositories {
        // 配置google maven仓库
        google()
        ...
    }
    dependencies {
            //插件需要3.0.0或以上
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}

2、禁用Jack

Jack不再被支持,如果项目里有使用Jack,需要先禁用jack,删除jackOptions配置块即可。

android {     ...     defaultConfig {         ...         // 删除jackOptions配置         jackOptions {             enabled true             ...         }     } }

注意:如果Android Studio 3检测到项目支持使用Jack/ Retrolambda或 DexGuard,它默认会使用这些插件提供的Java 8功能。

3、设置sourceCompatibility 和 targetCompatibility 

android {
   ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

支持Java 8的特性列表

API level 24开始支持一下Java 8 API:

  • java.util.stream
  • java.util.function
  • java.lang.FunctionalInterface
  • java.lang.annotation.Repeatable
  • java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
  • java.lang.reflect.Method.isDefault()

所有的Android API level支持try-with-resources

参考:https://developer.android.com/studio/write/java8-support.html