不同minSdkVersion和targetSdkVersion的Android需要哪个Java版本?

5
当我使用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?

1个回答

2

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中引入的Diamond Operator。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接