【问题标题】:How to enable Java 8 language features in Android studio如何在 Android Studio 中启用 Java 8 语言功能
【发布时间】:2017-09-11 09:26:39
【问题描述】:

现在随 Android Studio 2.4 Preview 4 一起发布,现在支持 Java 8 language features。不再需要 Jack,需要禁用 Jack 才能使用默认工具链中内置的改进的 Java 8 支持。

现在我们需要禁用 Jack 并切换到默认工具链。

如何在 android studio 项目中启用 Java 8 功能?

【问题讨论】:

    标签: android android-studio build.gradle android-studio-2.4 jack-toolchain


    【解决方案1】:

    启用 Java 8 支持

    要开始使用受支持的 Java 8 语言功能,请将 Android 插件更新到 2.4.0-alpha4(或更高版本)并将以下内容添加到您的模块的 build.gradle 文件中:

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

    禁用 jackOptions

    我们可以禁用 Jack 并切换到默认工具链,方法是从模块的 build.gradle 文件中删除 jackOptions 块:

    android {
        ...
        defaultConfig {
            ...
            // Remove this block.
            jackOptions {
                enabled true
            }
        }
    
    }
    

    注意:如果您的项目使用 Jack、Retrolambda 或 DexGuard,则 Android Studio 默认使用这些工具提供的 Java 8 支持。

    禁用 Java 8 支持:

    如果您遇到任何与 Java 8 相关的问题,我们还可以在您的项目中禁用 Java 8 功能。我们可以通过添加以下行来更新 gradle.properties 文件以禁用 Java 8 功能:

    android.enableDesugar=false
    

    查看Use Java 8 language features 了解有关 Java 8 功能的更多详细信息。

    【讨论】:

      【解决方案2】:

      我知道这个问题已经得到解答,但是在新的 Gradle 和 android studio 更新之后,jackOptions 已被弃用。

       android {
            .....
      
              defaultConfig {
              ..........
                  //remove jackOptions and add
                  android.compileOptions.sourceCompatibility 1.8
                  android.compileOptions.targetCompatibility 1.8
      
              }
              // Keep the following configuration in order to target Java 8.
               compileOptions {
      
                 sourceCompatibility JavaVersion.VERSION_1_8
                 targetCompatibility JavaVersion.VERSION_1_8
             }
        }
      

      【讨论】:

        【解决方案3】:

        简单的过程-

        Right click on Project > Open Module Setting (F4) > Modules (app) >
        

        选择 -

        Source Compatibility - 1.8
        Target Compatibility - 1.8
        

        【讨论】:

          【解决方案4】:

          干净的答案-

          只需将关注添加到应用级别build.gradleSync

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

          【讨论】:

            【解决方案5】:
            android {
              ...
              compileOptions {
                sourceCompatibility JavaVersion.VERSION_1_8
                targetCompatibility JavaVersion.VERSION_1_8
              }
            }
            

            并在同一个模块 gradle 中启用 jackOption

             defaultConfig {
                        jackOptions {
                        enabled true
                    }
                }
            

            android {
                compileSdkVersion 25
                buildToolsVersion "25.0.2"
                defaultConfig {
                    applicationId "****************"
                    minSdkVersion 15
                    targetSdkVersion 25
                    versionCode 1
                    versionName "1.0"
                    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
                    jackOptions {
                        enabled true
                    }
                }
                buildTypes {
                    release {
                        minifyEnabled false
                        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                    }
                }
            
            
                compileOptions {
                    targetCompatibility JavaVersion.VERSION_1_8
                    sourceCompatibility JavaVersion.VERSION_1_8
                }
            }
            

            【讨论】:

              猜你喜欢
              • 2017-08-08
              • 2011-11-01
              • 1970-01-01
              • 2016-05-10
              • 2022-07-25
              • 1970-01-01
              • 2016-05-06
              • 2016-08-28
              • 1970-01-01
              相关资源
              最近更新 更多