Android 的哪个 Java 版本具有不同的 minSdkVersion 和 targetSdkVersion

Which Java version for Android with different minSdkVersion and targetSdkVersion

当使用 Gradle 编译我的 Android 应用程序时,如何确定要使用哪个 Java 版本?例如,我的 gradle 构建文件的一些片段如下所示:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    // Other settings

    defaultConfig {
        applicationId "com.example"
        minSdkVersion 15
        targetSdkVersion 22

        // Other default settings
    }
}

Java android SDK 版本 19 及更高版本支持 SE 7,即 KitKat 及更高版本。鉴于上面的代码片段,我如何确定我应该使用 Java SE 7 还是 Java SE 6 来进行编译和源代码兼容性?

minSdkVersiontargetSdkVersion 均未用于确定编译的源代码兼容性。源兼容性和编译的决定因素是 compileSdkVersionbuildToolsVersion.

我使用了具有以下值的 gradle 文件:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    // Other settings

    defaultConfig {
        applicationId "com.example"
        minSdkVersion 8
        targetSdkVersion 23

        // Other default settings
    }
}

专门用于测试的代码片段是:

public void onCreate(Bundle bundle) {

    ...

    List<String> strings = new ArrayList<>();
    strings.add("John Doe");
    strings.add("Jane Doe");
    strings.add("Bill Gates");
    strings.add("Mark Zuckerberg");

    ListView listView = (ListView) findViewById(R.id.list);
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_gallery_item, strings);
    listView.setAdapter(adapter);

    ...
}

当您将构建工具更改为 buildToolsVersion = '17' 时,您会收到一条错误消息:

The SDK Build Tools revision (17.0.0) is too low for project ':app'. Minimum required is 19.1.0

当您将其更改为 buildToolsVersion = '19.1.0' 时,构建成功。

当您将 compileSdkVersion 设置为小于 buildToolsVersion 主要值的任何值时,构建失败,主要是由于缺少资源依赖性。

minSdkVersiontargetSdkVersion 设置为低于 compileSdkVersion 的任何版本都无效。

P.S. 1. Major value is the first integer before the first dot. e.g. buildToolsVersion '23.0.2' has major value is 23.

P.S. 2. I tested the results of a successful build with a real device with Android API Level 10, (Gingerbread 2.3.6). I set source code compatibility to JDK 7, and used the Diamond Operator introduced in Java 7.