Android Studio 使用 Java 8 编译项目?

问题描述 投票:0回答:2

我正在尝试使用 java 8 编译一个项目。

我已经设置了正确的jdk,如图所示:

还更改了目标版本:

但是我仍然收到错误: compileSdkVersion 'android-24' 需要 JDK 1.8 或更高版本才能编译。

我哪里错了?

编辑:我使用的是 Ubuntu 12.04

android-studio java-8
2个回答
8
投票

当进入 JDK 设置时,您可以:

添加“android app”模块build.gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

gradle.properties中设置sdk路径

org.gradle.java.home=/path_to_java_sdk_8/jdk1.8

还检查 .idea/modules/compiler.xml 与 1.7/1.8

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
      ...
    <bytecodeTargetLevel target="1.8">
      <module name="app" target="1.7" />
    </bytecodeTargetLevel>
  </component>

misc.xml

<?xml version="1.0" encoding="UTF-8"?>
  <project version="4">
    ....
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" 
              default="false" assert-keyword="true" 
              jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
  </component>
  <component name="ProjectType">
    <option name="id" value="Android" />
  </component>
 </project>

顺便说一句:如果你想针对 java 1.8 进行编译,你需要使用“jack” 请参阅https://source.android.com/source/jack.html


3
投票
android {
    compileSdkVersion 28
    buildToolsVersion = '28.0.3'
    defaultConfig {
        applicationId "your package name"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.