哪个Java版本适用于Android,具有不同的minSdkVersion和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 SE 7 支持 android SDK 版本 19 及更高版本,即 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 以下的任何版本都不起作用。

附言 1.主值是第一个点之前的第一个整数。例如 buildToolsVersion '23.0.2'的主要值是 23。

附言2。我用一台装有Android API Level 10(Gingerbread 2.3.6)的真实设备测试了成功构建的结果。我将源代码兼容性设置为 JDK 7,并使用了 Java 7 中引入的钻石运算符。

最新更新