Compilación con Android 4.X pero compatible con API Nivel 9
Estoy trabajando en una aplicación que utiliza ActionBarSherlock. Como señala la documentación :
[…] la biblioteca requiere que tanto ella como su proyecto estén compilados con Android 4.0 o más reciente. El proyecto también requiere que esté compilando con JDK 1.6 tanto en su editor como en cualquier sistema de compilación que esté utilizando.
- ShortCut para añadir el campo de clase al constructor existente en AndroidStudio o IDEA
- Android Studio: Utiliza AndroidAnnotations
- ¿Cómo mover las variables estáticas de una clase a otra cuando refactore en IntelliJ o Android Studio?
- Android Studio 2.0 inicia APK en otro dispositivo
- Diseño de vista previa con la etiqueta de raíz de mezcla en Intellij IDEA / Android Studio
Por lo tanto, eso significa que voy a compilar mi aplicación (y la biblioteca) contra Android 4.X, pero en mi Manifiesto, declaro que estoy apuntando (por ejemplo) API Nivel 9.
Todo esto funciona bien y bien, pero hay algo que me perturba. De la FAQ :
¿A qué nivel de API debo apuntar en mi manifiesto cuando utilizo la biblioteca?
Es necesario apuntar el API nivel 11 o más reciente, ya que hará que Android añada automáticamente la barra de acción nativa cuando se ejecute en dispositivos más nuevos. Dado que va a compilar contra nuevas API pero es probable que su aplicación se ejecute en dispositivos con versiones anteriores de Android , se debe tener cuidado para evitar el uso o verificar y llamar a cualquier método introducido después de la versión mínima de SDK.
Eso significa que tendré que comprobar manualmente cada llamada de método, así que no uso ninguna que no esté disponible en mi nivel de API orientado (9 en mi caso)? Esto me suena mal.
¿Hay alguna manera de decirle a mi IDE (IntelliJ), que sólo estoy usando el Nivel 9 de API (por lo que no obtengo autocompletado para métodos / clases no existentes y no los uso por accidente) y Entonces elige compilarlo contra otra versión de Android?
¿O puedo utilizar algunas comprobaciones automatizadas (que se ejecutan en tiempo de compilación) para comprobarlo?
- IntelliJ android problemas de procesamiento de interfaz de usuario - Missing Library
- IntelliJ "mantener sangrías en líneas vacías" no funciona
- ¿Cómo puedo importar una biblioteca de Android y usarla tanto en el código de producción como en las pruebas?
- IntelliJ Idea dando java.lang.OutOfMemoryError: Error de espacio de montón de Java incluso después de aumentar el tamaño de montón
- Cómo utilizar Gradle para generar archivos de proyecto Eclipse e Intellij para proyectos de Android
- Android Gradle Apache HttpClient no existe?
- getActionBar no funciona con AppCompat lib
- ¿Hay una manera fácil de tener el aviso de derechos de autor añadido automáticamente por android studio?
La característica de pelusa de ADT debe hacerse cargo de esto advirtiendo cuando se hacen llamadas API para la versión de API incorrecta.
Debe estar compilando ABS y su proyecto con el SDK más reciente disponible (en la actualidad, 4.1). Su manifiesto debe tener una targetSdkVersion
tan alta como sea posible (idealmente coincidiendo con su SDK de compilación) y su minSdkVersion
debe estar en la versión más baja que soporte.
Lint está parcialmente integrado con IntelliJ IDEA y también está disponible como una herramienta de línea de comandos.
Establecer temporalmente su SDK de destino a los varios más bajos y depurar con él. Su compilación final es con el SDK más reciente.
Establecer una meta de compilación similar a la que ha mencionado en su manifiesto.
Como siempre, debe establecer el targetSdk al máximo disponible en el manifiesto y en el archivo project.properties (según lo recomendado por google en uno de sus videos), para que el ADT y el SDK puedan optimizar el ADK en consecuencia.
Establezca el minSdk al que desee respaldar su aplicación y deje que Lint le diga si hay algún problema en caso de que utilice demasiado-new-features.