2012-04-25 13 views
30

Eclipse se niega a compilar mi proyecto de Android. En el explorador de paquetes, el nodo raíz del proyecto tiene el pequeño símbolo de error rojo, pero nada más dentro de este tiene este símbolo. La pestaña Problemas muestra los errores detectados por la pelusa:Android Lint erróneamente piensa que la versión mínima del SDK es 1

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 

Mi mejor conjetura es que la pelusa que piensa mi minSdkVersion es 1, lo que no lo es; mi manifiesto declara minSdkVersion="8". He intentado lo siguiente en un esfuerzo para solucionar este problema:

  • reinicio Eclipse
  • reiniciar mi equipo
  • Proyecto> Limpiar
  • borrar manualmente /bin y /gen para forzar dobladillo que se genere de nuevo

En este punto me he quedado sin ideas. ¿Alguien tiene sugerencias?

+0

¿Tiene otro proyecto abierto en eclipse?Si es así, cierre todas menos la que está trabajando (incluso las bibliotecas). Luego vuelva a ejecutar la pelusa. – inazaruk

+0

Confirmo que esto también me sucedió cuando moví el proyecto de Android que funcionaba en la subcarpeta en el área de trabajo. * Herramientas de Android> Clear Link Markers * parece una solución de trabajo. –

+0

¿Está utilizando otros proyectos como bibliotecas? Aunque declare 'minSdkVersion' en el Manifiesto de mi aplicación, obtuve este Lint-Marker en un proyecto de biblioteca del que depende mi aplicación, así que también tuve que declarar' minSdkVersion' en el manifiesto de mi proyecto de biblioteca –

Respuesta

77

tengo el mismo problema, y ​​mi solución es:

Haga clic derecho sobre la carpeta del proyecto> Herramientas de Android> Borrar Lint marcadores

"Ejecutar Android Lint" hace que algunos marcadores y los marcadores causen este error.

+0

Creo que esto es lo que hice, pero de alguna manera lo hice desde la pestaña Problemas haciendo clic derecho y seleccionando algo ... Sinceramente, no estoy seguro de qué, pero recuerdo que "Clear Lint Markers" era parte de eso, por lo esto obtiene la marca de verificación. – jdk

+0

En otra solución es mover un proyecto al nivel superior del espacio de trabajo en lugar de una subcarpeta –

+0

Incluso al hacer esto, apareció el error. Se necesita cerrar y reabrir el proyecto además de "Clear Lint Markers". – tarkeshwar

2

Intenta hacer clic derecho en la carpeta del proyecto> Herramientas de Android> fijar propiedades

También debe comprobar en las propiedades de construcción que todas las bibliotecas de androide y las cosas se comprueban y se carga en el orden correcto. Haga clic derecho sobre el proyecto> Propiedades> Construir

+0

Esto funcionó para mí, lo intenté la mayoría de las otras soluciones y estaba a punto de darse por vencido. No sé si realmente cambió algo o simplemente le dijo a eclipse que reconstruyera cachés (como de costumbre) pero funcionó. – MrCeeJ

+0

Súper tarde de respuesta (lo siento), pero esto es básicamente la reconstrucción del proyecto con sus propiedades actualizadas. Entonces sí, básicamente solo reconstruyendo; este es un problema diferente al error de pelusa, ¡a veces una reconstrucción está en orden! –

1

Un proyecto simple -> Clean también solucionó el problema.

6

Asegúrate de que tienes androide: identificador de nombre junto con minSdkVersion atributo. De esta manera:

android:minSdkVersion="8".

Al crear un proyecto basado en algunos proyectos de ejemplo de Android (como BluetoothChat), el espacio de nombres se omite y confunde a Lint. Entonces, incluso eliminar los marcadores de pelusa no cura realmente el problema, ya que reaparecen después de ejecutar Lint nuevamente, lo que sucede de manera automática con bastante frecuencia.

Nota: esto se verificó con muestras de revisión 1 para API16

+0

Esta es la solución real. Todas las otras respuestas aquí son solo soluciones temporales. Agregue esto a su AndroidManifest.xml '' –

16

"claras Lint marcadores" en la respuesta aceptada retira el error de forma temporal, pero seguía volviendo cada vez que me ahorré un archivo en el proyecto afectado .

Para hacer que deje de informar que el error, he tenido que deshabilitar la comprobación de pelusa por completo:

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. 

limpia y reconstruir el proyecto, y Eclipse/ADT ya no voy a ejecutar la verificación de pelusa para minSdk en su proyecto .

+1

¡Esto me estaba volviendo loco! Gracias :) – brianvaughn

Cuestiones relacionadas