IntelliJ / Eclipse不尊重Android应用程序的最低SDK版本

时间:2012-09-11 21:19:22

标签: android eclipse intellij-idea

我有一个针对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在这里使用旧版本的帮助吗?

谢谢!如果有任何我错过的信息,请随时发表评论,我会挖掘信息!

2 个答案:

答案 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:

  1. Project Structure&gt; Modules
  2. 选择一个模块
  3. Dependencies标签上,选择与您要限制自己的API级别相关的Module SDK。例如Android 2.3.3 Google APIs
  4. IDEA还致力于改进他们的Android Lint支持,以便即使在使用最新的SDK进行编译时,它也可以帮助您更轻松地检查是否符合API级别。

    http://youtrack.jetbrains.com/issue/IDEA-85200