Android Lint错误地认为最小SDK版本为1。

30

Eclipse拒绝构建我的Android项目。在包资源管理器中,项目根节点具有小的红色错误符号,但是其中没有任何其他符号。问题选项卡显示Lint检测到的错误:

Call requires API level 3 (current min is 1): android.os.AsyncTask#<init>   
Call requires API level 3 (current min is 1): android.view.GestureDetector#<init>   
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow   
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#hideSoftInputFromWindow   
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#showSoftInput
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#showSoftInput
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#showSoftInput
Call requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager#toggleSoftInput
Call requires API level 3 (current min is 1): android.view.Menu#getItem 
Call requires API level 3 (current min is 1): android.view.Menu#getItem 
Call requires API level 3 (current min is 1): android.widget.HorizontalScrollView#getId 
Call requires API level 5 (current min is 1): android.app.Activity#onBackPressed    
Call requires API level 5 (current min is 1): android.app.Activity#onBackPressed    
Call requires API level 5 (current min is 1): android.app.Activity#onBackPressed    
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager  
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager  
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager  
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager  
Class requires API level 3 (current min is 1): android.view.inputmethod.InputMethodManager
Class requires API level 3 (current min is 1): android.widget.HorizontalScrollView
Class requires API level 3 (current min is 1): android.widget.HorizontalScrollView
Field requires API level 3 (current min is 1): android.os.Build#DISPLAY
Field requires API level 4 (current min is 1): android.content.res.Configuration#screenLayout   
Field requires API level 4 (current min is 1): android.os.Build#CPU_ABI 
Field requires API level 4 (current min is 1): android.os.Build#MANUFACTURER
Field requires API level 4 (current min is 1): android.os.Build$VERSION#SDK_INT

我最好的猜测是Lint认为我的minSdkVersion是1,实际上它不是;我的清单文件中声明了 minSdkVersion="8"。我尝试了以下方法来解决这个问题:

  • 重启Eclipse
  • 重启电脑
  • 选择Project > Clean
  • 手动删除/bin/gen目录以强制重新生成它们

现在我已经没有主意了,有人有建议吗?


你在Eclipse中打开了其他项目吗?如果是,请关闭除你正在处理的那个项目之外的所有项目(包括库文件)。然后重新运行Lint。 - inazaruk
当我将工作中的Android项目移动到工作区的子文件夹中时,我确认这也发生在我身上。 Android工具>清除链接标记似乎是一个有效的解决方法。 - user1728449
你是否在使用其他项目作为库?尽管我在我的应用程序清单中声明了 minSdkVersion,但是我在依赖于我的应用程序的库项目中遇到了这个 Lint-Marker,因此我不得不在我的库项目清单中也声明 minSdkVersion - Christian García
5个回答

76

我遇到了同样的问题,我的解决方法如下:

右击项目文件夹 > Android 工具 > 清除 Lint 标记

"运行 Android Lint" 会创建一些标记,而这些标记会导致此错误。


我相信这就是我所做的,但不知何故是通过右键单击并选择某些内容从“问题”选项卡中完成的...老实说,我不确定是什么,但我记得其中包括“清除 Lint 标记”,因此这个任务已经完成。 - jdk
另一种解决方案是将项目移动到工作区的顶层,而不是某个子文件夹中。 - Display name
即使这样做了,错误仍然出现。除了“清除 Lint 标记”之外,还需要关闭并重新打开项目。 - tarkeshwar
大家都使用这个临时解决方案吗?难道没有人找到正确的解决方案来让lint理解minSdkVersion是什么吗??? - acrespo
对于Android Studio,(如果在AndroidManifest中的更改没有为Sdk版本带来任何好处),请尝试以下操作 - 右键单击项目,然后单击“打开模块设置”,选择“Flavors”并设置Min Sdk版本和Target Sdk版本。希望这能帮助到某些人。 - sunskin

16

"清除 Lint 标记" 在被采纳的答案中暂时移除了错误,但每次在受影响的项目中保存文件时,该错误都会再次出现。

为了停止报告该错误,我不得不完全禁用 lint 检查:

Right click project -> Properties -> Android Lint Preferences

Search for "minSdk" in the search box

Click on "UsesMinSdkAttributes"

Click the "Ignore All" button at the bottom.

清理并重新构建项目,Eclipse/ADT 将不再对你的项目进行最低 SDK 的代码检查。


1
这让我疯狂了!谢谢 :) - bvaughn

6

请确保在minSdkVersion属性中包含android:命名空间标识符。格式如下:

android:minSdkVersion="8"

在基于某些Android示例项目(如BluetoothChat)创建项目时,命名空间会被省略并混淆Lint。即使清除了Lint标记,问题也不会真正得到解决,因为它们会在再次运行Lint后自动重新出现。

注意:这已经在API16的示例修订版1中验证过了。


这是实际解决方案。这里的所有其他答案都只是权宜之计。将此添加到您的 AndroidManifest.xml 中 <uses-sdk android:minSdkVersion="12" android:targetSdkVersion="15" android:maxSdkVersion="19" /> - Gerald Schneider

2

对我来说,一个简单的项目 -> 清理也解决了这个问题。


2
尝试在项目文件夹上右键单击 > Android 工具 > 修复属性。您还应检查构建属性,确保所有Android库和其他内容都已选中并以正确的顺序加载。右键单击项目 > 属性 > 构建。

这对我有用,我尝试了大多数其他解决方案,差点放弃了。我不知道它是否实际上改变了什么或只是告诉Eclipse重新构建缓存(像往常一样),但它起作用了。 - MrCeeJ
非常晚的回复(抱歉),但基本上是使用更新后的属性重新构建项目。所以,基本上只需重新构建;这与lint错误不同,有时需要重新构建! - El Duderino

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接