我有一个针对Android 15的Android项目,但其最低版本为Android 8.这在清单文件中定义:
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="15"/>
这意味着我只能使用Android 8以上的功能。
当我使用像String类'isEmpty()方法(在API 9中添加)这样的方法时,IntelliJ和Eclipse都很乐意编译它,但是当我在旧设备上运行它时,我会崩溃因为API 8没有实现了isEmpty()。
有谁知道为什么IDE都无法捕获这样的东西?
我的Java编译器是版本1.6.0_33 - 会强制IDE在这里使用旧版本的帮助吗?
谢谢!如果有任何我错过的信息,请随时发表评论,我会挖掘信息!
答案 0 :(得分:5)
应该编译。这允许您通过包装类在更新的SDK中使用更新的方法。如果您的目标 SDK为8,则IDE会抓住您并抱怨。
更多信息:
http://developer.android.com/guide/practices/compatibility.html
包装类技术非常有用。这篇博文中有一篇关于它的指南:
http://android-developers.blogspot.com/2009/04/backward-compatibility-for-android.html
修改强>
应该注意Eclipse的最新ADT(r20,也许更早),其中 Lint 的默认设置将查找minSDK上方API方法的使用情况。但是,它只会在修改文件后检查文件,或者运行Lint。
有关Lint的更多信息:http://tools.android.com/tips/lint
答案 1 :(得分:3)
对于IntelliJ IDEA:
Project Structure
&gt; Modules
Dependencies
标签上,选择与您要限制自己的API级别相关的Module SDK
。例如Android 2.3.3 Google APIs
。 IDEA还致力于改进他们的Android Lint
支持,以便即使在使用最新的SDK进行编译时,它也可以帮助您更轻松地检查是否符合API级别。