2012-07-30 9 views
7

Estoy trabajando en una aplicación que utiliza ActionBarSherlock. Ya que es documentation señala:Compilando con Android 4.X pero admitiendo API Nivel 9

[...] la biblioteca requiere que tanto ella como su proyecto se compilado con Android 4.0 o posterior. El proyecto también requiere que esté compilando con JDK 1.6 en su editor y en cualquier sistema de compilación que pueda estar utilizando.

lo tanto, eso significa que voy a compilar mi aplicación (y la biblioteca) en contra de Android 4.x pero en mi Manifiesto, declaro que estoy de orientación (por ejemplo) Nivel API 9.

Este todo funciona bien y bien, pero hay algo que me molesta. Desde el FAQ:

¿Qué nivel de API debería apuntar en mi manifiesta cuando se utiliza la biblioteca?

Se requiere la API de destino de nivel 11 o posterior, ya que hará que Android agregue automáticamente la barra de acción nativa cuando se ejecute en dispositivos más nuevos. Dado que compilará nuevas API pero su aplicación probablemente se ejecutará en los dispositivos con versiones anteriores de Android , debe tener cuidado adicional para evitar el uso o verificar correctamente y llamar a los métodos que se introdujeron después de su SDK mínimo versión.

Eso significa, que tendrá que comprobar manualmente cada llamada de método, por lo que no uso ninguna que no están disponibles en mi objetivo de nivel API (9 en mi caso)? Esto me suena mal.

¿Hay alguna manera de decirle a mi IDE (IntelliJ), que solo estoy usando el API Level 9 (por lo que no obtengo ningún autocompletado para métodos/clases no existentes y no los uso? por accidente) y luego optar por compilar contra otra versión de Android?

¿O puedo usar algunas comprobaciones automáticas (que se ejecutan en tiempo de compilación) para verificarlo?

Respuesta

8

La característica de pelusas del ADT debe solucionar esto advirtiendo cuando se realicen llamadas API para una versión de API incorrecta.

Debe compilar tanto el ABS como su proyecto con el último SDK disponible (actualmente, 4.1). Su manifiesto debe tener un targetSdkVersion lo más alto posible (lo ideal es que coincida con su SDK de compilación) y su minSdkVersion debe establecerse en la versión más baja que admita.

Lint está parcialmente integrado con IntelliJ IDEA y también está disponible como una herramienta de línea de comandos.

1

Establece temporalmente su SDK de destino a los más bajos y depura con él. Su compilación final es con el último SDK.

+0

Este sería el enfoque * manual *. –

+0

Oh, pensé que te referías al manual buscando cada llamada y verificando. No creo que haga lo que quieres automáticamente. Esa es una buena idea para una futura actualización de ADT, pero no creo que esté disponible actualmente. ¡Pero no estoy seguro! –

0

Establezca un objetivo de compilación similar al que ha mencionado en su manifiesto.

+0

Como ya se mencionó por @GeeksOnHugs ... –

+0

establecer un objetivo de compilación es diferente a la configuración de una versión de SDK de destino. Tampoco requiere ningún cambio en el manifiesto. Sé que al menos en eclipse, el cambio del objetivo de compilación arreglará todos los mensajes de error. Probablemente también desee incluir una versión minSdkVersion más baja así como su targetSdkVersion, de modo que esté disponible desde minSdkVersion en Play store. – Stevy888

0

como siempre, debe establecer targetSdk al máximo disponible tanto en el manifiesto como en el proyecto.archivo de propiedades (según lo recomendado por google en uno de sus videos), para que ADT & SDK pueda optimizar el ADK en consecuencia.

configura el minSdk al que deseas que sea compatible con tu aplicación y deja que Lint te avise si hay algún problema en caso de que uses funciones demasiado nuevas.

Cuestiones relacionadas