当使用Gealle编译我的Android应用程序时,我如何确定要使用哪个Java版本?例如,我的gradle构建文件的一些片段如下所示:
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
// Other settings
defaultConfig {
applicationId "com.example"
minSdkVersion 15
targetSdkVersion 22
// Other default settings
}
}
JavaSE 7支持Android SDK版本19和更高版本,即KITKAT和以上。在上面的代码段中,我如何确定是否应该使用Java SE 7或Java SE 6进行编译和源代码兼容性?
最佳答案
minSdkVersion
和targetSdkVersion
都不用于确定编译的源代码兼容性。源代码兼容性和编译的决定因素是compileSdkVersion
和buildToolsVersion
。
我使用了具有以下值的渐变文件:
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
主值的任何值,则生成将失败,主要原因是缺少资源依赖关系。将
minSdkVersion
和targetSdkVersion
设置为低于compilesdkversion的任何版本都没有效果。P.S. 1。主值是第一个点之前的第一个整数。例如,
buildToolsVersion '23.0.2'
的主要值是23。附注2。我用android api级别为10的真实设备(姜饼2.3.6)测试了成功构建的结果。我将源代码兼容性设置为jdk 7,并使用java7中引入的diamond操作符。