是否有可能使用Java 8进行Android开发?
在网上search,目前还不清楚Java 8是否支持Android开发。
在我下载/安装Java 8之前,可以有人指出我的任何“官方”文档说Java 8是或不支持Android开发。
java 8
Android支持所有Java 7语言function以及随平台版本而变化的Java 8语言function的子集。
检查哪些function的Java 8支持
使用Java 8语言function
我们决定直接在当前的javac和dx工具集中添加对Java 8语言特性的支持,并且弃用Jack工具链。 有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该继续工作。 outlook未来,Java 8语言function将由Android构build系统本地支持。 我们打算在未来几周内将其作为Android Studio的一部分,我们希望尽早与您分享这一决定。
Android的Java 8语言function支持的未来
Eclipse用户:
对于喜欢Eclipse的老开发人员, Google停止支持Eclipse Android开发人员工具
如果你安装了Java 8的JDK,那么试试看,如果出现任何问题,试着在Eclipse的窗口菜单→ 首选项 → Java → 编译器中将编译器设置为1.6。 Java 7也将起作用:
如果您的目标是Android 5.0及更高版本,则需要Java 7或更高版本。
安装多个JDK并尝试。
UPDATE 2017/11/04 – Android Studio 3.0现在支持Java 8,现在不再需要gradle-retrolambda
。 请参阅https://developer.android.com/studio/write/java8-support.html
如果您使用gradle-retrolambda
,上面的链接还包括迁移说明。 下面的原始答案:
Android不支持Java 8.它只支持Java 7(如果你有kitkat),它仍然没有invokedynamic,只有新的语法糖。
如果你想使用lambdaexpression式,Android中的Java 8的主要function之一,你可以使用gradle-retrolamba 。 这是一个Gradle构build依赖项,它集成了retrolambda,一个将Java 8字节码转换回Java 6/7的工具。 基本上,如果您在Android Studio中设置编译器来编译Java 8字节码,从而允许lambdas,它会将其转换回Java 6/7字节码,然后转换为dalvik字节码。 如果你想尝试一下Android中的一些JDK 8function来代替官方的支持,这是一个黑客。
您确实可以使用gradle-retrolamba
retrolamba gradle build dependency来使用Java 8 for Android Development。
下面是我最近为Android开发运行lambdaexpression式的完整指南。 本指南的最初来源在最后提到。
在本指南中,将演示一些将Java 8function引入Android开发工具的方法,特别针对Eclipse IDE 。 但是,本指南中将要描述的步骤也可能适用于Google的新起义开发环境Android Studio。 它基于JetBrainsstream行的IntelliJ Idea IDE的社区版本,最近在2014年7月初,在本指南写成之前,已经由Google升级到了它的“testing版”。 Eclipse将继续作为重要的开发环境,至less在一段时间内,考虑到大多数Android项目都是使用Eclipse开发的,所以将新的Java 8function(如lambdaexpression式)引入到ADT中似乎对开发人员非常有用。
Android开发基于一个名为Apache Harmony Project的自定义Java实现,该实现在2011年终止.Android Development中最常用的Java语法是Java 6(v1.6)和Java 7(v1.7)。 KitKat版本(Android 4.4。+)。 因此,像lambdaexpression式这样的Java 8特性不能直接在Android应用程序开发中使用,而无需对开发工具进行一些调整。 幸运的是,这些构造基本上是一些“语法糖”的增强,给开发人员诸如“匿名类”之类的缺点,并且可以翻译成Java 6或Java 7类。
最近将Java 8源代码翻译成较低Java版本的方法称为RetroLambda 。 这个库使得开发人员可以在Java 7上使用lambdaexpression式运行Java 8代码,甚至更低。 遗憾的是,除了lambdaexpression式以外的Java 8特性现在还不被RetroLambda支持,但lambdaexpression式的概念是Java 8平台上最大的一次飞跃,它对于Android开发人员来说是一个很好的工具。
关于这个库的细节可以在它的GitHub页面上find:
https://github.com/orfjackal/retrolambda#getting-started
此外,由另一个开发人员创build的用于RetroLambda的Gradle插件允许在Java或Android项目中实现基于Gradle的构build。 但是,开发者只提到将这个插件集成到Android Studio环境中。 详细信息可以在其GitHub页面上find:
https://github.com/evant/gradle-retrolambda
在基于Eclipse的开发环境中使用这些基础架构不能直接处理,但是在本指南中是可行的,并且将被展示。
制备
本指南假定读者对Android开发具有基本的了解,并且基于ADT版本22.6.2,因为最近的ADT版本23.0.2似乎有像布局文件夹创build这样的问题。 有关此问题的详细信息可以在以下链接中find:
http://code.google.com/p/android/issues/detail?id=72591
本指南中的步骤将针对Windows 8.1,64位开发机器给出,但它们可以很容易地适用于其他平台。 新的构build系统Gradle
将被用于构build/清理过程,并且其安装过程也将被提供。 而且, JDK 8
和JDK 7
必须在开发机器上共存。 必须遵循以下步骤来安装它们:
- 转到JDK 8早期访问预览页面http://jdk8.java.net
- 下载JDK 8u20并安装它。 JRE 8安装是没有必要的,可以跳过
- 转到JDK 7最新的稳定版本页面http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- 下载JDK 7u65并安装它。 JRE 7的安装再次没有必要,可以跳过
- 将JDK 8主文件夹和JDK 8
bin
文件夹添加到%PATH%
variables中 - 使用JDK 8主文件夹path的值创build一个新的环境variables
JAVA_HOME
- 再次使用JDK 8主文件夹path的值创build一个新的环境variables
JAVA8_HOME
- 使用JDK 7主文件夹path的值创build一个新的环境variables
JAVA7_HOME
- 打开一个terminal窗口并运行
java -version
命令并validationJava 8已启动并正在运行 - 在同一窗口中运行
javac -version
命令,并validationJDK 8 Java编译器是否已启动并正在运行
现在,ADT-22.6.2必须从以下链接下载:
android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
- 下载ADT并将其内容解压缩到一个文件夹中,例如
D:\adt
- 使用ADT安装文件夹path的值定义名为
ANDROID_HOME
的新环境variables,例如D:\adt\sdk
- 将您的
Andoid SDK Platform Tools
和Andoid SDK Tools
文件夹(例如D:\adt\sdk\tools
和D:\adt\sdk\platform-tools
)添加到您的%PATH%
variables中 - 如果你喜欢,创buildEclipse IDE的快捷方式。 它位于ADT安装文件夹下,例如
D:\adt\eclipse
- 运行Eclipse IDE并创build一个工作空间,例如
D:\adt\workspace
- 点击位于工具栏上的
Android SDK Manager
button - 仅select
Android SDK Build tools Rev. 19.1
和Android Support Library
。 取消select其他一切并安装这两个软件包。
如果一切顺利,ADT将会启动并运行。
强烈build议安装以下工具:
-
Eclipse Kepler Java 8支持:它使Eclipse识别新的Java 8语法扩展,并使您在Java代码编辑器中摆脱恼人的
red dots
。 可以通过Help -> Install New Software
在Eclipse中Help -> Install New Software
进行Help -> Install New Software
。 inputhttp://download.eclipse.org/eclipse/updates/4.3-P-builds/到Work with
领域并继续安装它。 -
Nodeclipse / Enide Gradle:主要用于突出显示Groovy语言关键字。 Groovy被用作Gradle构build脚本的DSL。 这个插件可以通过
Eclipse Marketplace
安装。 但是,ADT-22.6.2中的Eclipse Marketplace Client
不能与Eclipse Marketplace Client
一起使用。 因此,您首先需要在Eclipse Marketplace Client
通过Install New Software
工具来安装Eclipse Marketplace Client
。 inputhttp //:download.eclipse.org/mpc/kepler/进入“Work with
字段并继续安装。 安装Eclipse Marketplace Client
,您可以在Eclipse Marketplace Client
searchNodeclipse/Enide Gradle
并安装它。 -
Genymotion虚拟设备:它是ADT随附的默认
Android Virtual Device
完美替代品。 AVD烦人的烦人,并无故停止崩溃。 Genymotion使您可以使用由Oracle VirtualBox执行的CyanogenMod
映像来准备Android VD。 其单一用户许可证是免费的,可以从http://www.genymotion.com下载。; 只需要login,也可以集成到Eclipse中。 详情可以在下面find:
https://cloud.genymotion.com/page/doc/#collapse8
下面是基于Android 4.3的CyanogenMod虚拟设备的屏幕截图,
它可能被认为是在基于x86或x64的个人计算机上运行的完全安全的Android设备。 为了在此虚拟设备上使用Google Google PlayStore
类的Google服务,必须将其使用的Android版本的gapps
图像gapps
到设备上。 可以从CyanogenMod网站下载适用于该设备的gapps
映像:
http://wiki.cyanogenmod.org/w/Google_Apps
Gradle安装是可选的,因为它也是由Android SDK本身提供的,但强烈build议单独安装。 它的安装可能会按照以下步骤进行:
-
转到Gradle网站: http : //www.gradle.org/
-
点击
Downloads
- 在
Previous Releases
select版本1.10并下载gradle-1.10-all.zip或gradle-1.10-bin.zip - 将其内容解压缩到一个文件夹,例如
D:\adt\gradle
- 使用Gradle安装文件夹path的值定义一个名为
GRADLE_HOME
的新环境variables,例如D:\adt\gradle
- 将您的Gradle二进制文件夹(例如
D:\adt\gradle\bin
)添加到您的%PATH%
variables中 - 打开一个terminal窗口并运行
gradle -v
命令并validation它是否已启动并运行如果您已经成功完成了这gradle -v
,则表示您已准备好使用Java 8function创build您的第一个Android应用程序。
演示程序
将创build一个简单的应用程序来演示上一节中介绍的工具的用法。 您可以简单地按照下面给出的步骤来了解在Android Developer Tools中使用lambdaexpression式:
- 运行Eclipse IDE并通过select
File -> New -> Other -> Android -> Android Application Project
来创build一个新的Android应用File -> New -> Other -> Android -> Android Application Project
- 填写如下所示的表格:
- 只需点击下列表格上的
Next
button,然后点击最后一个表格上的Finish
button。 等到ADT完成加载项目 - 右键单击该项目并select
New -> Folder
并将其命名为builders
- 右键单击
gen (Generated Java Files)
文件夹并将其删除。 Gradle将尽快为我们生成相同的文件,并将它们添加到项目s build path. The
由默认Ant构build器创builds build path. The
gen`文件夹不再需要,该文件夹下的工件将被废弃 -
在
builders
文件夹下创build以下batch file:- gradle_build.cmd
- gradle_post_build.cmd
- gradle_clean.cmd
-
填写这些batch file如下:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
- 取消select
Project -> Build Automatically
菜单选项 - 右键单击项目,然后select“
Properties -> Builders
然后取消selectADT提供的所有默认构build器 - 在同一窗口中单击
New
button,然后selectProgram
,然后单击OK
- 新的构build器configuration窗口将出现。 填写如下标签:
新的Builderconfiguration的Main
选项卡
Refresh
生成器configuration的选项卡
新buildBuilderconfiguration的Environment
选项卡
Build Options
Builderconfiguration的Build Options
卡
- 创build名为
Gradle_Post_Build
的第二个构build器,该构build器使用gradle_post_build.cmd
作为其程序。 此构build器的所有其他设置必须与之前创build的构build器完全相同。 此构build器将负责将构build过程创build的构件复制到bin
文件夹中。 - 创build名为
Gradle_Cleaner
的第三个构build器,它使用gradle_clean.cmd
作为其程序。 只有在最后一个选项卡中Run the builder
设置必须设置为During a Clean
。 此构build器的所有其他设置必须与第一个构build器完全相同。 这个构build器将负责清除构build过程中产生的构件,顾名思义。
HelloLambda
项目的新build设者
- 右键单击该项目,然后select
Export
- select
Android -> Generate Gradle Build Files
,然后单击Next
- 在下一个窗口中select项目,然后单击
Finish
- 转到您的项目的根文件夹,并删除
gradlew
和gradlew.bat
文件。 同时删除gradle
文件夹 - 切换回Eclipse并select
Project -> Clean
菜单选项。 填写如下所示的表格:
Clean Project
窗口
- 单击
OK
然后等待清洗过程完成 - 在
MainActivity
类中调用setContentView
函数之后,添加下面给出的Java代码片段:
- 将
build.gradle
文件的开始更改为sourceCompatibility
节,如下所示:
- 右键单击项目并select“
Properties -> Java Compiler
选项,并将所有合规性级别设置为Java 8.这将使Eclipse识别新的Java 8结构,如lambdaexpression式。 - 在通知窗口中单击
No
- 用鼠标右键单击该项目,然后select
Build project
。 Eclipse将开始构build项目。
构build过程
-
右键单击该项目,然后转到“
Properties -> Java Build Path
。 将以下文件夹添加到构buildpath(也显示在下图中):-
build\source\buildConfig\debug
-
build\source\r\debug
-
Eclipse现在可以识别R.java
和buildConfig.java
文件,并且不会显示任何表示与项目资源文件有关的错误的red dots
。
- 右键单击项目,然后select
Run As -> Run Configurations
为您的Android目标平台创build一个新的Run As -> Run Configurations
。 例如,这个演示应用程序如Genymotion VD所示:
HelloLambda应用程序
您可以在LogCat
窗口中观察到具有简单的lambdaexpression式的代码片段正常工作
来源: 在Android开发人员工具中使用Java 8 Lambdaexpression式
按照此链接获取新的更新。 使用Java 8语言function
老答案
从Android N预览版本开始,Android支持Java 8的 有限特性参见Java 8语言特性
要开始使用这些function,您需要下载并设置Android Studio 2.1和Android N Preview SDK,其中包括所需的Jack工具链和更新的Gradle插件。 如果您尚未安装Android N Preview SDK,请参阅设置为适用于Android N的开发 。
支持Java 8语言function和API
Android目前不支持所有的Java 8语言function。 但是,开发面向Android N Preview的应用程序时,现在可以使用以下function:
默认和静态接口方法
Lambdaexpression式 (也可用于API级别23及更低版本)
可重复的注释
方法参考 (也可用于API等级23及更低版本)
Android支持一些额外的Java 8function,您可以从Java 8语言function中看到完整的细节
更新
注意:Android N将其lambdaexpression式的实现基于匿名类。 这种方法允许它们在早期版本的Android上向后兼容和执行。 要testing早期版本的lambdaexpression式,记得去你的build.gradle文件,并将compileSdkVersion和targetSdkVersion设置为23或更低。
更新2
现在,Android studio 3.0稳定版本支持Java 8库和Java 8语言function (没有Jack编译器)。
Android使用分支出Java 6的Java。
从Android SDK版本19开始,可以通过执行此操作来使用Java 7function。 没有完全支持Java 8(还)。
Android官方支持Android 8以来的Java 8
function公告在这里 ,Java 8语言公告是:
改进的Java 8语言支持 – 我们很高兴将Java 8语言function带入Android。 使用Android的Jack编译器,现在可以在Android版本上使用许多stream行的Java 8语言function,包括lambdas等。 新function有助于减less样板代码。 例如,lambdas可以在提供事件监听器时replace匿名内部类。 某些Java 8语言function(如默认和静态方法,stream和function接口)现在也可在N及更高版本上使用。 与Jack一起,我们期待更紧密地跟踪Java语言,同时保持向后兼容性。
是的,Android支持Java 8 Now(24.1.17)
现在有可能
但是你将需要让你的设备在java 1.8上运行,并启用“jackOptions”来运行它。 Jack是运行Java 8的新的Android编译器的名称
https://developer.android.com/guide/platform/j8-jack.html
将这些行添加到build_gradle
android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
Java 8似乎是Android studio 2.0的运行Java引擎,但是我检查后它仍然不接受java 8的语法,现在你不能从android studio中select一个编译器。 但是,如果您需要Android客户端中的函数式编程机制,则可以使用scala插件。
我们可以使用Java 8使用:
-
在build.gradle(Project:myProject)中添加以下内容
classpath 'me.tatarka:gradle-retrolambda:xxx' //xxx is recent version
-
在build.gradle(Module:myModule)中添加以下内容
apply plugin: 'me.tatarka.retrolambda' compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
本地Java 8到达android! 最后!
从每个模块的build.gradle文件中删除Retrolambda插件和retrolambda块:
要禁用Jack并切换到默认工具链,只需从模块的build.gradle文件中移除jackOptions块即可
要开始使用受支持的Java 8语言function,请将Android插件更新到3.0.0(或更高版本)
从Android Studio 3.0开始,Java 8语言function现在由android本机支持:
- Lambdaexpression式
- 方法引用
- types注释(当前types注释信息在运行时不可用,但仅在编译时);
- 重复注释
- 默认和静态接口方法(API级别24或更高,不支持即时运行);
从最低API级别24还可以使用以下Java 8 API:
- java.util.stream
- java.util.function
- java.lang.FunctionalInterface
- java.lang.annotation.Repeatable
- java.lang.reflect.AnnotatedElement.getAnnotationsByType(类)
- java.lang.reflect.Method.isDefault()
将这些行添加到应用程序模块的build.gradle中以通知项目的语言级别:
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
通过将以下内容添加到您的gradle.properties文件来禁用对Java 8语言function的支持:
android.enableDesugar=false
你完成了! 你现在可以使用原生的java8!
Android Studio 3.0开始为一些Java 8语言function提供内置的支持,这些function是:
- Lambdaexpression式
- 方法引用
- types注释(信息在编译时可用,但在运行时不可用)
- 重复注释
- 默认和静态接口方法
从API级别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()
除此之外, try-with-resources
支持扩展到所有Android API级别。
未来还会增加更多的Java 8function。
要开始使用受支持的Java 8语言function,请将Android插件更新到3.0.0-alpha1(或更高版本),并将以下内容添加到模块的build.gradle文件中:
android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
欲知详情,请访问:
https://developer.android.com/studio/write/java8-support.html
当我在2年前问这个问题的时候,答案确实是“正式”的,但是正如ekcr1的回答所指出的那样,如果你使用retrolamba,你可以得到一个最值得期待的function(lambda)。 当时我还在使用eclipse,因为Android Studio处于“预览”模式,所以我从来没有去追求过这个道路。
今天,我认为“官方”的答案仍然是否定的,虽然retrolamba似乎仍然是一个好的出路,但愿意走下一条“非官方”路线的人们也可以selectKotlin。
今天Kotlin达到了1.0.0。 对于那些不熟悉Kotlin的人,可以在这里find更多信息:
或者看这个由杰克·沃顿(Jake Wharton)发表的演讲的utubevideo
最新消息:
谷歌宣布,在Android N和Android Studio 2.1+平台上将支持Java 8.也发布了studio 2.1的稳定版本。
最后我们可以使用lambdaexpression式。 for循环中没有更多列表filter。 Horeeey。
添加这个configurationbuild.gradle和同步gradle:
android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // or //sourceCompatibility 1.8 //targetCompatibility 1.8 } }
谷歌刚刚宣布,Java 8将本机支持Android和杰克工具链将弃用:
我们决定直接在当前的javac和dx工具集中添加对Java 8语言特性的支持,并且弃用Jack工具链。 有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该继续工作。 outlook未来,Java 8语言function将由Android构build系统本地支持。 我们打算在未来几周内将其作为Android Studio的一部分,我们希望尽早与您分享这一决定。
更多信息: https : //android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
是。 我们将尽快使用Java 8!
我们决定直接在当前的javac和dx工具集中添加对Java 8语言特性的支持,并且弃用Jack工具链。 有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该继续工作。 outlook未来,Java 8语言function将由Android构build系统本地支持。 我们打算在未来几周内将其作为Android Studio的一部分,我们希望尽早与您分享这一决定。
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
我写了一个类似的答案堆栈溢出类似的问题 ,但这是答案的一部分。
Android Studio 2.1:
Android Studio(2.1)的新版本支持Java 8function。 以下是Android开发者blogspot文章的摘录:
… Android Studio 2.1版本包括对新的Jack编译器的支持和对Java 8的支持。
…
要在使用N Developer Preview进行开发时使用Java 8语言function,您需要使用Jack编译器。 新build项目向导[文件→新build→项目]为针对N的项目生成正确的configuration。
在Android Studio 2.1之前:
Android不支持Java 1.8(它只支持1.7),所以你不能使用Java 8的function,如lambda。
这个答案给出了Android Studio兼容性的更多细节 ; 它指出:
如果你想使用lambdaexpression式,这是Android 8中Java 8的主要特性之一,你可以使用gradle-retrolamba
如果你想了解更多关于使用gradle-retrolambda
, 这个答案给出了很多细节 。
我想我会发布一个更新的答案,为那些正在寻找一些更新的东西。
目前Android和Android Studio支持Java 8function的一个子集。 根据他们网站上的Android文档,Google说:
对Java 8语言function的支持需要一个名为Jack的新编译器。 Jack仅支持Android Studio 2.1及更高版本。 所以如果你想使用Java 8语言function,你需要使用Android Studio 2.1来构build你的应用程序。
如果您已经安装了Android Studio,请确保您通过单击帮助>检查更新(在Mac上,Android Studio>检查更新)更新到最新版本。 如果您的工作站上尚未安装IDE,请在此处下载Android Studio。
支持Java 8语言function和API
Android不支持所有的Java 8语言function。 但是,开发面向Android 7.0(API级别24)的应用程序时,可以使用以下function:
- 默认和静态接口方法Lambdaexpression式(也可在API级别23和更低版本上使用)
- 可重复的注释
- 方法参考(也可用于API等级23及更低版本)
- 键入注释(也可在API级别23及更低版本上使用)
另外,以下Java 8语言API也可用:
反思和语言相关的API:
- java.lang.FunctionalInterface
- java.lang.annotation.Repeatable
- 与可重复注释相关联的java.lang.reflect.Method.isDefault()和Reflection API,如AnnotatedElement.getAnnotationsByType(Class)
实用程序API:
- java.util.function
- java.util.stream
为了使用新的Java 8语言function,您还需要使用Jack工具链 。 这个新的Android工具链将Java语言源编译为Android可读的DEX字节码,具有自己的.jack库格式,并提供大多数工具链function作为单个工具的一部分:重新打包,缩小,混淆和multidex。
以下是用于构buildAndroid DEX文件的两个工具链的比较:
Legacy javac toolchain: javac (.java → .class) → dx (.class → .dex) New Jack toolchain: Jack (.java → .jack → .dex)
三年前我问过这个问题,显然答案多年来一直在改变。 正如上面已经回答的那样,到了某个时候,答案变成了“ 是” 。 我从来没有更新接受的答案,因为这是当时的正确答案。 (我不知道堆栈溢出策略是什么)
我只是想为那些仍然在寻找这个话题的人添加另一个答案。 截至2017年5月17日Google还宣布Kotlin也是Android开发的官方语言。
我还没有find正式的新闻稿,但是我看过一些Google I / O video 。 这是Kotlin团队发布的博客文章的链接。
添加以下修复了我的问题(Android Studio 2.3.2):
build.gradle(Project)
buildscript { repositories { ... jcenter() } dependencies { ... classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY ... } }
build.gradle(模块:应用程序)
apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' //PLUGIN android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } // SET JAVA VERSION ... }