Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以使用Java8进行Android开发吗?_Java_Android_Java 8_Android Gradle Plugin - Fatal编程技术网

可以使用Java8进行Android开发吗?

可以使用Java8进行Android开发吗?,java,android,java-8,android-gradle-plugin,Java,Android,Java 8,Android Gradle Plugin,在网上搜索,不清楚Android开发是否支持Java8 在我下载/设置Java 8之前,有人能告诉我Android开发是否支持Java 8的任何“官方”文档吗。Java 8 Android支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异 检查支持java 8的哪些功能 我们决定将对Java8语言特性的支持直接添加到当前的javac和dx工具集中,并反对使用Jack工具链。有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该继续工作。今后,Android

在网上搜索,不清楚Android开发是否支持Java8

在我下载/设置Java 8之前,有人能告诉我Android开发是否支持Java 8的任何“官方”文档吗。

Java 8 Android支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异

检查支持java 8的哪些功能

我们决定将对Java8语言特性的支持直接添加到当前的javac和dx工具集中,并反对使用Jack工具链。有了这个新的方向,依赖于Java类文件格式的现有工具和插件应该继续工作。今后,Android构建系统将在本机支持Java8语言功能。我们的目标是在未来几周内将其作为Android Studio的一部分发布,我们希望尽早与您分享这一决定

Eclipse用户: 对于喜欢Eclipse的老开发人员

如果您安装了Java8JDK,请尝试一下,如果出现任何问题,请尝试从窗口菜单将Eclipse中的编译器设置为1.6→ 首选项Java编译器。 Java 7也将起作用:

Java->编译器“>

如果您的目标是Android 5.0和Android,则需要Java 7或更高版本 更高

安装多个JDK并重试。

Java8 Android支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异

检查支持java 8的哪些功能

我们决定将对Java 8语言功能的支持直接添加到当前的Java C和dx工具集中,并反对使用Jack工具链。根据这一新方向,依赖于Java类文件格式的现有工具和插件应该继续工作。向前看,Android b将本机支持Java 8语言功能我们的目标是在未来几周内将其作为Android Studio的一部分发布,我们希望尽早与您分享这一决定

Eclipse用户: 对于喜欢Eclipse的老开发人员

如果您安装了Java8JDK,请尝试一下,如果出现任何问题,请尝试从窗口菜单将Eclipse中的编译器设置为1.6→ 首选项Java编译器。 Java 7也将起作用:

Java->编译器“>

如果您的目标是Android 5.0和Android,则需要Java 7或更高版本 更高


安装多个JDK并重试。

更新2017/11/04-Android Studio 3.0现在对Java 8具有本机支持。
现在不再需要gradle retrolambda
。看

如果您使用的是
gradle retrolambda
,则上述链接还包括迁移说明。原始答复如下:


Android不支持Java8。它最多只支持Java7(如果您有kitkat),但仍然没有InvokedDynamic,只有新语法sugar


如果您想使用lambdas(Android中Java8的主要功能之一),您可以使用。它是一个gradle构建依赖项,集成了retrolambda,一个将Java8字节码转换回Java6/7的工具。基本上,如果您在Android Studio中设置编译器来编译Java 8字节码,从而允许使用lambdas,它会将其转换回Java 6/7字节码,然后再转换为dalvik字节码。如果你想在安卓系统中试用JDK 8的一些功能来代替官方支持,这是一个黑客攻击。

更新2017/11/04-安卓Studio 3.0现在对Java 8有了本机支持。
现在不再需要gradle retrolambda
。看

如果您使用的是
gradle retrolambda
,则上述链接还包括迁移说明。原始答复如下:


Android不支持Java8。它最多只支持Java7(如果您有kitkat),但仍然没有InvokedDynamic,只有新语法sugar


如果您想使用lambdas(Android中Java8的主要功能之一),您可以使用。它是一个gradle构建依赖项,集成了retrolambda,一个将Java8字节码转换回Java6/7的工具。基本上,如果您在Android Studio中设置编译器来编译Java 8字节码,从而允许使用lambdas,它会将其转换回Java 6/7字节码,然后再转换为dalvik字节码。如果你想在安卓系统中试用JDK 8的一些功能来代替官方支持,这是一个黑客攻击。

安卓系统使用的Java是Java 6的分支


从Android SDK版本19开始,您可以使用Java 7功能。目前还没有对Java8的完全支持。

Android使用的Java是Java6的分支


从Android SDK版本19开始,您可以使用Java 7功能。还没有对Java 8的完全支持。

您确实可以使用
gradle retrolamba
gradle build dependency来使用Java 8进行Android开发

下面是我最近在运行lambda expressions for Android开发时遵循的完整指南。本指南的原始来源在最后提到

在本指南中,介绍了将一些Java8功能引入 Android开发工具将被演示,专门针对 eclipseide。然而,本指南中描述的步骤也可能适应谷歌新的起义发展 环境,安卓工作室。它基于 JetBrains推出了流行的IntelliJ Idea,最近 谷歌于2014年7月初将其升级至“beta”版,略低于 在本指南编写之前。日食将仍然是最突出的 开发环境,至少在一段时间内,并考虑 事实上,大多数Android项目都是使用Eclipse开发的 将新的Java8特性(如lambda表达式)引入到 ADT似乎对我们很有用
    android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
 android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }
android.enableDesugar=false
android {
    ...
    defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // or
        //sourceCompatibility 1.8
        //targetCompatibility 1.8
    }
}
Legacy javac toolchain:
    javac (.java → .class) → dx (.class → .dex)
    New Jack toolchain:
    Jack (.java → .jack → .dex)
android {
  defaultConfig {
    // Required when setting minSdkVersion to 20 or lower
    multiDexEnabled true
  }

  compileOptions {
    // Flag to enable support for the new language APIs
    coreLibraryDesugaringEnabled true
    // Sets Java compatibility to Java 8
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

dependencies {
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
}
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
buildscript {
repositories {
    ...
    jcenter()
}
dependencies {
    ...
    classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
    ...
   }
}
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
    ...
}
 android {
   compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8
       targetCompatibility JavaVersion.VERSION_1_8
   }
 compileOptions {
    targetCompatibility = '1.8'
    sourceCompatibility = '1.8'
 }