Android Lint erroneously thinks min SDK version is 1

自作多情 提交于 2021-02-05 19:57:55

问题


Eclipse refuses to build my Android project. In the package explorer, the project root node has the little red error symbol, but nothing else inside of it has this symbol. The Problems tab shows errors detected by 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

My best guess is that Lint thinks my minSdkVersion is 1, which it isn't; my manifest declares minSdkVersion="8". I've tried the following in an effort to fix this:

  • Restarting Eclipse
  • Restarting my computer
  • Project > Clean
  • Manually deleting /bin and /gen to force hem to be generated again

At this point I'm out of ideas. Anybody have suggestions?


回答1:


I have the same problem, and my solution is:

Right click on the project folder > Android tools > Clear Lint Markers

"Run Android Lint" makes some markers and the markers cause this error.




回答2:


"Clear Lint Markers" in the Accepted Answer removed the error temporarily, but it kept coming back every time I saved a file in the affected project.

To make it stop reporting that error, I had to disable the lint check altogether:

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.

Clean and rebuild the project, and Eclipse/ADT will no longer run the lint check for minSdk on your project.




回答3:


Make sure you have android: namespace identifier together with minSdkVersion attribute. Like this:

android:minSdkVersion="8".

When creating a project based on some Android sample projects (like BluetoothChat) the namespace gets omitted and confuses Lint. Then even clearing Lint Markers doesn't truly cure the issue as they reappear after running Lint again, which happens automatically pretty often.

Note: this was verified with samples revision 1 for API16




回答4:


Try right clicking on the project folder > Android tools > fix properties

You should also check in the build properties that all your android libraries and things are checked and loading in the correct order. Right click on the project > Properties > Build




回答5:


A simple Project -> Clean also fixed the issue for me.



来源:https://stackoverflow.com/questions/10322482/android-lint-erroneously-thinks-min-sdk-version-is-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!