minSdkVersion 和 targetSdkVersion 均不用于确定编译的源代码兼容性。源代码兼容性和编译的决定因素是compileSdkVersion 和buildToolsVersion。
我使用了具有以下值的 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 主要值的任何值时,构建失败,主要是由于缺少资源依赖关系。
将minSdkVersion 和targetSdkVersion 设置为低于compileSdkVersion 的任何版本均无效。
附: 1. 主要值是第一个点之前的第一个整数。例如buildToolsVersion '23.0.2' 的主要值为 23。
附: 2. 我使用具有 Android API 级别 10(Gingerbread 2.3.6)的真实设备测试了成功构建的结果。我将源代码兼容性设置为JDK 7,并使用了Java 7中引入的Diamond Operator。