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

Mar*_*ark 2 eclipse android intellij-idea

我有一个针对Android 15的Android项目,但有最低版本的Android 8.这在清单文件中定义:

<uses-sdk android:minSdkVersion="8"
    android:targetSdkVersion="15"/>
Run Code Online (Sandbox Code Playgroud)

这意味着我只能使用Android 8以上的功能.

当我使用像String类'isEmpty()方法(在API 9中添加)这样的方法时,IntelliJ和Eclipse都很乐意编译它,但是当我在旧设备上运行它时,我会崩溃,因为API 8没有isEmpty( )实施.

有谁知道为什么IDE都不能抓住这样的东西?

我的Java编译器是版本1.6.0_33 - 会强制IDE在这里使用旧版本的帮助吗?

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

pjc*_*jco 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