database - room - Versión de SQLite utilizada en Android?
sqlite android descargar (4)
¿Cuál es la versión de SQLite utilizada en Android?
Motivo: me pregunto cómo manejar las migraciones de esquemas. Las nuevas versiones de SQLite admiten un comando SQL "ALTER TABLE" que me ahorraría tener que copiar datos, eliminar la tabla, volver a crear la tabla y volver a insertar datos.
Aunque la documentación proporciona 3.4.0 como número de referencia, si ejecuta el siguiente sql, notará que hay un número 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 un pedazo 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 tengo 3.6.22 .
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, las diferencias de API de nivel de paquete más antiguas (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 el Administrador de SDK)
SQLite 3.19.4 (¡por alguna razón, 3.19.4 no existe en las notas de la versión de sqlite! Así que en lugar de enlazar con los controles de versión):
- 27 -8.1.0-O MR1
SQLite 3.18.2 :
- 26-8.0.0-O (nota: O versiones beta usadas 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 Vista previa 1 (nivel 22 del SDK) usado 3.8.10 )
SQLite 3.8.6.1 (el enlace de 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.1 :
- 21-5.0-Lollipop
SQLite (desconocido):
- 20-4.4W.2-Android Wear (no hay emulador disponible, pero probablemente 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 :
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 SDK de Android muestran dónde ha cambiado el paquete android.database.sqlite . Donde no hay enlace (p. Ej., Nivel 17 del SDK), 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 dispositivos con sqlite3 disponible: https://.com/a/3645800/444761
Para otros dispositivos, vea la respuesta de Juri .
He agregado un Issue # 58909 al Rastreador de problemas de Android. Por favor, marca esto si quieres 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 .
$ adb shell
$ sqlite3 --version
sqlite3 --version
3.5.9
Lo mismo en el emulador ADP1 1.6 y 2.1.