Android Studio对Java8特性的支持

Android Studio 3.0及以上版本支持所有Java7语言功能,以及部分Java8语言功能,这里要注意一下,不是所有Java8特性都支持。

Android官网罗列的:支持的Java 8语言功能和API

使用默认工具链

所谓默认工具链,就是Android studio官方自带的工具集,用于Java8特性编译处理,非第三方工具,当然兼容性和稳定性更好,必须优先使用啊。

要开始使用受支持的Java8语言功能,请更新Android插件到3.0.0(或更高版本)。然后,针对使用(包括在源代码中或通过依赖项使用)Java8语言功能的每个模块,在其build.gradle文件中添加以下代码:

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

迁移至默认工具链

从 Jack 迁移

Jack工具链已经废弃,最好是迁移到默认工具链。

要停用Jack并切换至默认工具链,只需从您的模块build.gradle文件中移除jackOptions 块即可:

android {    ...    defaultConfig {        ...        // Remove this block.        jackOptions {            enabled true            ...        }    }    // Keep the following configuration in order to target Java 8.    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}

从 Retrolambda 迁移

与 Android Studio的默认工具链相比,Retrolambda缺少对使用Java8语言功能的第三方库的支持。要迁移到默认工具链,请从您的项目级build.gradle文件中移除Retrolambda依赖项:

buildscript {  ...   dependencies {      // Remove the following dependency.      classpath 'me.tatarka:gradle-retrolambda:'   }}

同时移除每个模块build.gradle文件中的Retrolambda插件和retrolambda块:

// Remove the following plugin.apply plugin: 'me.tatarka.retrolambda'...// Remove this block after migrating useful configurations.retrolambda {    ...    // If you have arguments for the Java VM you want to keep,    // move them to your project's gradle.properties file.    jvmArgs '-Xmx2048m'}

停用Java8语言特性支持

如果您遇到与Java 8语言功能支持相关的问题,可在gradle.properties文件中加入以下代码来停用此支持:

android.enableDesugar=false

更多相关文章

  1. C语言函数的递归(上)
  2. Android的编译过程 & Android(安卓)dex 方法限制的一些总结
  3. android——退出程序的功能,关闭所有本程序界面
  4. Android提高十八篇之自定义Menu(TabMenu) [转]
  5. Android(安卓)9.0 pie——“馅饼”的终版新功能
  6. Android下的ldd
  7. Android实现记住用户名和密码功能
  8. Android定位功能
  9. android和ios的本质区别

随机推荐

  1. Android-日历CalendarView使用
  2. android 中的字符串总结
  3. android上传图片过大处理
  4. ContentProvider简单用法
  5. CyanogenMod 编译 Google Nexus S ("cres
  6. android常用view布局
  7. Android自定义视图控件
  8. android handler发送消息需要注意的地方
  9. Error:(1, 0) Cause: com/android/build/
  10. 学习android JNI的那些事儿--------4. Fi