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

时间:2016-03-10 07:38:03

标签: java android build-tools

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

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    // Other settings

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

        // Other default settings
    }
}

Android SDK版本19及更高版本支持Java SE 7,适用于KitKat及更高版本。鉴于上述代码段,我如何确定是否应该使用Java SE 7或Java SE 6进行编译和源代码兼容?

1 个答案:

答案 0 :(得分:0)

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.主要值是第一个点之前的第一个整数。例如buildToolsVersion '23.0.2'的主要价值是23。

     

P.S。 2.我使用Android API Level 10(Gingerbread 2.3.6)的真实设备测试了成功构建的结果。我将源代码兼容性设置为JDK 7,并使用了Java 7中引入的Diamond运算符。