【问题标题】:Android Lint erroneously thinks min SDK version is 1Android Lint 错误地认为 min SDK version 是 1
【发布时间】:2012-05-06 12:57:46
【问题描述】:

Eclipse 拒绝构建我的 Android 项目。在包资源管理器中,项目根节点有一个红色的小错误符号,但它里面的其他任何东西都没有这个符号。 Problems 选项卡显示了 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
  • 重新启动我的电脑
  • 项目 > 清理
  • 手动删除/bin/gen强制重新生成下摆

在这一点上,我没有想法。有人有建议吗?

【问题讨论】:

  • 你在eclipse中打开了其他项目吗?如果是,请关闭您正在使用的所有内容(甚至是库)。然后重新运行 lint。
  • 我确认当我将工作中的 Android 项目移动到工作区的子文件夹时,这也发生在我身上。 Android 工具 > 清除链接标记 似乎是一种可行的解决方法。
  • 您是否正在使用其他项目作为库?虽然我在我的应用程序清单中声明了minSdkVersion,但我在我的应用程序所依赖的库项目中获得了这个 Lint-Marker,所以我必须在我的库项目的清单中也声明 minSdkVersion

标签: android eclipse build compiler-errors android-lint


【解决方案1】:

我也有同样的问题,我的解决方法是:

右键单击项目文件夹 > Android 工具 > 清除 Lint Markers

“Run Android Lint”会生成一些标记,这些标记会导致此错误。

【讨论】:

  • 我相信这就是我所做的,但不知何故通过右键单击并选择某些内容从“问题”选项卡中做到了......老实说,我不确定是什么,但我记得“清除皮棉标记” " 是其中的一部分,所以这会得到复选标记。
  • 另一个解决方案是将项目移动到工作区的顶层而不是某个子文件夹
  • 即使这样做,也出现了错误。除了“清除 Lint Markers”之外,还需要关闭并重新打开项目。
  • 每个人都应用这个临时修复吗?没有人找到正确的修复方法让 lint 了解 minSdkVersion 是什么????
  • ***对于 Android Studio,(如果 AndroidManifest 中的更改对 Sdk 版本没有任何好处),试试这个 - 右键单击​​项目并单击“打开模块设置”并选择“Flavors " 并设置最小 SDK 版本和目标 SDK 版本。希望这可以帮助某人
【解决方案2】:

Accepted Answer 中的“Clear Lint Markers”暂时消除了错误,但每次我在受影响的项目中保存文件时,它都会再次出现。

为了让它停止报告该错误,我不得不完全禁用 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 将不再对您的项目运行 minSdk 的 lint 检查。

【讨论】:

  • 这快把我逼疯了!谢谢:)
【解决方案3】:

确保您有 android: 命名空间标识符以及 minSdkVersion 属性。像这样:

android:minSdkVersion="8".

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

注意:这已通过 API16 的示例修订 1 进行了验证

【讨论】:

  • 这是实际的解决方案。这里的所有其他答案只是解决方法。将此添加到您的 AndroidManifest.xml &lt;uses-sdk android:minSdkVersion="12" android:targetSdkVersion="15" android:maxSdkVersion="19" /&gt;
【解决方案4】:

尝试右键单击项目文件夹 > Android 工具 > 修复属性

您还应该在构建属性中检查您的所有 android 库和东西都已检查并以正确的顺序加载。右键单击项目>属性>构建

【讨论】:

  • 这对我有用,我尝试了大多数其他解决方案并且正要放弃。我不知道它是否真的改变了任何东西,或者只是告诉 eclipse 重建缓存(像往常一样),但它起作用了。
  • 超迟响应(对不起),但这基本上是在更新您的属性的情况下重建项目。所以,是的,基本上只是重建;这是一个与 lint 错误不同的问题,有时重建只是为了!
【解决方案5】:

一个简单的Project -> Clean也为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2012-09-08
    • 2019-11-23
    • 2018-02-02
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多