【问题标题】:Which Java version for Android with different minSdkVersion and targetSdkVersion哪个 Java 版本的 Android 具有不同的 minSdkVersion 和 targetSdkVersion
【发布时间】:2016-03-10 07:38:02
【问题描述】:

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

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    // Other settings

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

        // Other default settings
    }
}

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

【问题讨论】:

    标签: java android build-tools


    【解决方案1】:

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

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

    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        // Other settings
    
        defaultConfig {
            applicationId "com.example"
            minSdkVersion 8
            targetSdkVersion 23
    
            // Other default settings
        }
    }
    

    专门用于测试的代码的一个sn-p是:

    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 级别 10(Gingerbread 2.3.6)的真实设备测试了成功构建的结果。我将源代码兼容性设置为JDK 7,并使用了Java 7中引入的Diamond Operator。

    【讨论】:

      猜你喜欢
      • 2014-04-15
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2022-01-17
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多