Versión de SQLite utilizada en Android?

¿Cuál es la versión de SQLite utilizada en Android?

Motivo: me pregunto cómo manejar las migraciones de esquema. Las versiones más nuevas de SQLite admiten un comando SQL “ALTER TABLE” que me ahorraría tener que copiar datos, descartar la tabla, recrear la tabla y volver a insertar datos.

ACTUALIZACIÓN OCT 2016 : Aquí hay un enlace a los documentos oficiales actualizados que incluye los puntos principales en esta respuesta: android.database.sqlite package-level javadoc

Usando los emuladores (adb shell sqlite3 –version):

ACTUALIZACIÓN: Lo sentimos, los diffs de API de nivel de paquete anteriores (SDK 18 y anteriores) han dejado de funcionar: https://issuetracker.google.com/issues/37048579

SQLite 3.22.0 :

  • 28 -9.0-P (Revisión 5 en SDK Manager)

SQLite 3.19.4 (por alguna razón 3.19.4 no existe en las notas de la versión de sqlite, por lo que se vincula a los controles de versiones en su lugar):

  • 27 -8.1.0-O MR1

SQLite 3.18.2 :

  • 26-8.0.0-O (nota: O versiones beta utilizadas 3.18.0 )

SQLite 3.9.2 :

  • 25-7.1.1-N MR1
  • 24 -7.0-N (nota: las vistas previas usaron la misma versión)

SQLite 3.8.10.2 :

  • 23-6.0-M (nota: M Preview 1 (SDK nivel 22) utilizado 3.8.10 )

SQLite 3.8.6.1 (el enlace SQLite es para 3.8.6 porque 3.8.6.1 no existe por alguna razón):

  • 22-5.1.1-Lollipop

SQLite 3.8.6 :

  • 21-5.0-Lollipop

SQLite (desconocido):

  • 20-4.4W.2-Android Wear (no hay emulador disponible, pero probablemente sea 3.7.11 o 3.8.4.3)

SQLite 3.7.11 :

  • 19-4.4-KitKat
  • 18-4.3-Jelly Bean
  • 17-4.2-Jelly Bean
  • 16 -4.1-Jelly Bean

SQLite 3.7.4 :

  • 15-4.0.3-Ice Cream Sandwich
  • 14 -4.0-Ice Cream Sandwich
  • 13-3.2-Honeycomb
  • 12-3.1-Honeycomb
  • 11 -3.0-Honeycomb

SQLite 3.6.22 :

  • 10-2.3.3-Gingerbread
  • 9-2.3.1-Gingerbread
  • 8 -2.2-Froyo

SQLite 3.5.9 :

  • 7-2.1-Eclair
  • 4-1.6-Donut
  • 3 -1.5-Cupcake

Nota: los enlaces de nivel de Android SDK muestran dónde ha cambiado el paquete android.database.sqlite . Donde no hay ningún enlace (por ejemplo, nivel SDK 17), indica que no hay cambios en ese paquete.

Nota: Aquí hay algunas anomalías (lista de ninguna manera exhaustiva):

SQLite 3.7.13 (en lugar de 3.7.11):

  • LG Optimus L70 MS323 LGMS323 | KOT49I.MS32310b (19-4.4-KitKat)
  • LG Optimus G E975 LG-E975 | JZO54K (16-4.1-Jelly Bean)
  • LG G2 D802 LG-D802 | JDQ39B (17-4.2-Jelly Bean)

SQLite 3.7.6.3 (en lugar de 3.6.22):

  • LG Optimus Sol E730 / myTouch E739 / myTouch Q C800 (10-2.3.3-Gingerbread, GRJ22)
  • LG Optimus Vu F100S / F100L (10-2.3.3-Gingerbread, RK39F)
  • LG Optimus LTE TAG F120K / F120L (10-2.3.3-Gingerbread, GRK39F)
  • LG Optimus LTE L-01D (10-2.3.3-Gingerbread, GRJ90)
  • LG Optimus Net P690b (10-2.3.3-Gingerbread, GINGERBREAD)
  • LG Prada KU5400 (10-2.3.3-Gingerbread, GWK74)
  • LG Prada P940 (10-2.3.3-Gingerbread, GWK74)
  • LG LU6200 / SU640 (10-2.3.3-Gingerbread, GRJ90) s

SQLite 3.7.5 (en lugar de 3.7.4):

  • Samsung Galaxy Note (15-GT-N7000 | IML74K.ZSLPF)
  • Samsung Galaxy SII (15-SC-02C | IML74K.OMMP4 y GT-I9100 | IML74K.DXLP7)
  • Samsung Galaxy S Duos (15-GT-S7562 | IMM76I.S7562XXBMD6)
  • Samsung Galaxy Tab 7.7 (15-GT-P6810 | IMM76D.ZSLP8)

SQLite 3.7.0.1 (en lugar de 3.6.22):

  • LG Esteem MS910 (10-2.3.3-Gingerbread, GSE-_v.05)
  • AndroTab (8-2.2-Froyo, 1.0.7100.0385)
  • GPLUS MUSN M500 (8-2.2-Froyo, FRG83G)

SQLite 3.6.23.1 (en lugar de 3.5.9):

  • Motorola Backflip MB300 (7-2.1-Eclair, ERD79)
  • Garmin-Asus nüvifone A10 / A50 / Garminfone (7-2.1-Eclair, ERE27)

Nota: el comando adb para obtener la versión SQLite solo funciona en emuladores y en dispositivos con sqlite3 disponible: https://stackoverflow.com/a/3645800/444761

Para otros dispositivos, vea la respuesta de Juri .

He agregado un Issue # 58909 al Android Issue Tracker. Por favor, marque esto si desea apoyarlo.

Nota: si desea que su aplicación use la misma versión de SQLite en todas las versiones de Android, considere usar esta biblioteca de soporte de SQLite de terceros .

Aunque la documentación da 3.4.0 como número de referencia, si ejecuta el siguiente sql, notará que hay una cantidad mucho mayor de SQlite instalado:

 Cursor cursor = SQLiteDatabase.openOrCreateDatabase(":memory:", null).rawQuery("select sqlite_version() AS sqlite_version", null); String sqliteVersion = ""; while(cursor.moveToNext()){ sqliteVersion += cursor.getString(0); } 

Esto es solo una pieza de código rápido y sucio para recuperar la versión de sqlite. Por ejemplo, en un HTC Hero con Android 2.1, obtengo: 3.5.9 .

En mi Nexus One con Android 2.2, incluso obtengo 3.6.22 .

 $ adb shell $ sqlite3 --version sqlite3 --version 3.5.9 

Lo mismo en ADP1 1.6 y 2.1 emulador.

Una breve descripción de las API Andorid y las versiones soportadas de SQLite.

enter image description here

La descripción es del enlace en la respuesta de Mark Carters.