我有一个具有此设置的应用程序项目:
android {
compileSdkVersion 21
buildToolsVersion '19.1.0'
defaultConfig {
minSdkVersion 10
targetSdkVersion 19
}
buildTypes {
release {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
我有一个带有try-with资源的块,如果Build.SDK小于API 19,则不使用检查。 我没有从IDE那里得到任何关于它的错误。 我使用目标SDK Android 4.1.2在模拟器上运行了一个程序,一切都很好,也在Android 4.2.2设备上进行了检查。程序调用此代码,使用调试器进行检查。 一切都顺利吗?我希望IDE可能存在兼容性错误,但是没有。
如果我尝试在IDE中使用相同的minVersionSdk 10创建一个新项目,我在IDE中遇到有关兼容性的错误。 但在我的工作项目中,我没有得到它。 我不知道,是否有其他兼容性设置,而不是build.gradle和AndroidManifest.xml?为什么它在API< 19?
更新: 您需要在Android Studio中检查Lint设置。 编辑 - 检查 Android Lint,在旧版本上调用新方法
答案 0 :(得分:1)
如果您只使用在API 10之前创建的方法(您可以检查here),一切正常。
如果您不确定,可以运行lint(通过右键单击根文件夹),然后您可以检查lint是否警告您不推荐使用方法。
如果您想要更多解释,请不要犹豫,发表评论
答案 1 :(得分:1)
为什么它在API< 19?
根据这个:https://code.google.com/p/android/issues/detail?id=73483它“主要适用于”API 15,并且您在API 16仿真器(4.1.2)上进行了测试。
问题提升者声明:
由于它在API级别19中未被隐藏,因此try-with-resources向后兼容至API级别15。
Google会员回复(已编辑):
AutoCloseable
是ics。它只是一个界面;这是javac发出代码来实际关闭。 iirc中的AutoCloseable
课程数量少于我们实际取消的课程所以“向后兼容”有点误导。 “大多数作品”更接近事实。
由于它不完全兼容,警告来自API 19。
至于为什么你没有看到警告,我认为这取决于你可以追溯到2013年12月的旧buildToolsVersion
。https://developer.android.com/tools/revisions/build-tools.html
您应该始终使用Android SDK Manager下载最新版本来更新Build Tools组件