2012-03-29 14 views
31

acabo de leer esta descripción de la Biblioteca Paquete/Compatibilidad androide de la ayuda ...Android Support Package/Biblioteca de compatibilidad: ¿usa v4 o v13?

http://developer.android.com/sdk/compatibility-library.html

... y me queda un poco confundido! Dice que la biblioteca v13 es un superconjunto de v4 pero pensé que era al revés?

Práctica: si quiero usar la biblioteca de compatibilidad de modo que mi aplicación se construya y funcione bien para teléfonos con Android 2.2 (API 8) hasta 4.0 (API 14) y más, ¿bastará v4 para mí?

Respuesta

35

Para apuntar a la API 8 (v2.2) debe usar la versión v4.

Grandes secciones del v13 funcionarán, pero si usa cualquiera de las características que dependen de las 13 API de la plataforma, su aplicación explotará en dispositivos más antiguos.

A menos que exista una razón particularmente apremiante para necesitar v13, sugiero ir directamente a v4.

+0

Para aclarar: estoy especificando 'targetSdkVersion' como "14" y 'minSdkVersion' como "8" en mi manifiesto. Entonces, v4 sigue siendo el que quiero, ¿verdad? –

+2

Si usa la v13, y usa una función que depende de una plataforma 13 API, su aplicación explotará. Solo porque compila, no significa que funcionará en todos los dispositivos. –

+0

Todavía no entiendo si v13 requiere 13+ dispositivos ¿por qué es un superconjunto de v4 ... – Olivier

9

¡La respuesta es correcta pero también es un poco confusa! Actualmente hay 3 jarras de soporte: V4, V7 y V13. Desafortunadamente V7 es específicamente para gridlayout solamente y por lo tanto NO es un superconjunto.

Estamos interesados ​​en un solo contenedor de la biblioteca de soporte [a menos que también deseemos gridlayout (¡no sé qué es!)]. Por lo tanto, estamos mirando nuestro android: minSdkVersion = "8" y comprobándolo contra los frascos. Entonces queremos V4.

V13 es solo un superconjunto en el sentido de que duplica los métodos V4, NO el código. Es decir. el uso de V13 sería incorrecto en este ejemplo.

5

No creo que deberíamos usar superconjunto (o subconjunto) para describir estas tres bibliotecas (V4, V7, v13) aunque el significado más simple parece compatible con versiones anteriores de la versión 4, 7 y 13.

Google ha añadido Fragmenta primero en v4 y luego actualízalo cuando se publique cada versión nueva. Esto significa que a menos que tu aplicación solo admita la versión más nueva (que no es recomendable), necesitamos compatibilidad con v4 casi en cualquier momento. Supongamos que tu minsdk es 14 y tiene fragmento ya, pero el 'fragmento incrustado' solo es compatible después de 17, por lo que todavía necesitamos v4 y usamos el fragmento v4 en esa situación.

Este año (2013) google publicó v7 y agregó appcompat-library en él. Eso significa que además de la tercera barra de herramientas de soporte (ActionbarSherlock) antes de 11, el soporte oficial puede ser mejor One ?? Luego, creo que tendremos todas las actualizaciones de funciones de la barra de acciones cuando se publique cada nueva versión en el futuro en v7.

Todavía necesitamos minsdk = XX (entre 7 y 10) today (Nov.24,2013) .we debe añadir soporte-v4 para el fragmento y el apoyo-v7 para actionbar tanto para las mejores prácticas.

+0

su respuesta explica muy bien que no existe una relación de superconjunto de subconjuntos entre estas bibliotecas que la mayoría de las personas cree. – thedarkpassenger

0

v13 solo tiene funciones sobre Fragment. principalmente si su minVersion está por encima de 13 y no se usan funciones como: FragmentPagerAdapter, FragmentStatePagerAdapter, FragmentTabHost y fragmentos anidados; no necesita soporte v13.

por lo que "v4 es un subconjunto de v13" es incorrecto!

1

Comprobé el código fuente de v13, agrega solo 4 más clases.

  • FragmentCompat
  • FragmentPagerAdapter
  • FragmentStatePagerAdapter
  • FragmentTabHost

FragmentCompat añade 2 métodos util estáticos que están incluidos en el fragmento v4 ya.

FragmentPagerAdapter, FragmentStatePagerAdapter y FragmentTabHost, todas estas 3 clases tienen las mismas clases de nombre correspondientes en v4, y tienen el mismo comportamiento.

Las API adicionales proporcionadas en v13 no son necesarias.

Al agregar v4, puede admitir más plataformas que v13, con el mismo comportamiento con v13, ¿por qué no usar v4?

Así que no pude ver ninguna necesidad para v13. ¿Estoy en lo cierto?

0

Un poco tarde, por favor, eche un vistazo a la imagen de abajo. En el archivo JAR androide-support-v13.jar, hay 3 paquetes:

  • anotación
  • v4
  • v13

Significado sólo tenemos que añadir este frasco, y Tendríamos soporte para v4 y v13. Como v7 NO está en la compilación, tendríamos que agregar ese JAR por nuestra cuenta.

enter image description here

Cuestiones relacionadas