¿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 esquemas. Las versiones más nuevas de SQLite admiten un comando SQL "ALTER TABLE" que me evitaría tener que copiar datos, eliminar la tabla, volver a crear la tabla y volver a insertar datos.
Aquí hay un enlace a los documentos oficiales que incluyen los puntos principales de esta respuesta: android.database.sqlite javadoc a nivel de paquete
Código Kotlin para obtener la versión SQLite del marco (consejo: simplemente inserte un punto de interrupción en su Actividad onCreate()
y use este código en Evaluate Expression...
):
val version = android.database.sqlite.SQLiteDatabase.create(null).use {
android.database.DatabaseUtils.stringForQuery(it, "SELECT sqlite_version()", null)
};
"Framework (API ${android.os.Build.VERSION.SDK_INT}) SQLite version: $version".also { println(it) }
Usando los emuladores (nota, la versión de SQLite en dispositivos reales será al menos la especificada):
Nivel API* | Versión | Nombre | SQLite | Notas |
---|---|---|---|---|
35 | 15 | V | 3.42.0 | Vista previa del desarrollador 1 |
34 | 14 | Ud. | 3.39.2 | UNIÓN EXTERIOR DERECHA y COMPLETA |
33 | 13 | t | 3.32.2 | |
32 | 12L | Sv2 | 3.32.2 | |
31 | 12 | S | 3.32.2 | |
30 | 11 | R | 3.28.0 | funciones de ventana |
29 | 10 | q | 3.22.0 | |
28 | 9 | Tarta | 3.22.0 | |
27 | 8.1 | galletas oreo | 3.19.4 | consulte 3.19.3 y comprobaciones de control de versiones porque el enlace 3.19.4 no existe |
26 | 8.0 | galletas oreo | 3.18.2 | O versiones beta utilizadas 3.18.0 |
25 | 7.1.1 | Turrón | 3.9.2 | |
24 | 7.0 | Turrón | 3.9.2 | |
23 | 6.0 | Malvavisco | 3.8.10.2 | M Preview 1 (SDK nivel 22) usado 3.8.10 |
22 | 5.1.1 | Chupete | 3.8.6.1 | consulte 3.8.6 y los registros de control de versiones porque el enlace 3.8.6.1 no existe |
21 | 5.0 | Chupete | 3.8.6 | |
20 | 4.4W.2 | Desgaste de Android | desconocido | no hay emulador disponible, pero probablemente 3.7.11 o 3.8.4.3 |
19 | 4.4 | Kit Kat | 3.7.11 | |
18 | 4.3 | Frijol de jalea | 3.7.11 | |
17 | 4.2 | Frijol de jalea | 3.7.11 | |
dieciséis ** | 4.1 | Frijol de jalea | 3.7.11 | |
15 | 4.0.3 | Sándwich De Helado | 3.7.4 | |
14 ** | 4.0 | Sándwich De Helado | 3.7.4 | |
13 | 3.2 | Panal | 3.7.4 | |
12 | 3.1 | Panal | 3.7.4 | |
11 ** | 3.0 | Panal | 3.7.4 | |
10 | 2.3.3 | Pan de jengibre | 3.6.22 | |
9 | 2.3.1 | Pan de jengibre | 3.6.22 | |
8 ** | 2.2 | froyo | 3.6.22 | |
7 | 2.1 | Eclair | 3.5.9 | |
4 | 1.6 | Rosquilla | 3.5.9 | |
3 ** | 1.5 | magdalena | 3.5.9 |
* Los enlaces de nivel de API de Android muestran dónde ha cambiado el paquete android.database.sqlite . Donde no hay ningún enlace (por ejemplo, API nivel 17), indica que no hay cambios en ese paquete.
** Enlace SDK roto, ver aquí
Nota: si desea que su aplicación use la misma versión de SQLite en todas las versiones de Android, considere usar la biblioteca de soporte SQLite de terceros de Requery o SQLCipher (si también desea cifrado).
Aunque la documentación proporciona 3.4.0 como número de referencia, si ejecuta el siguiente sql, notará que hay una cantidad mucho mayor de SQlite instalados:
Cursor cursor = SQLiteDatabase.create(null).rawQuery("select sqlite_version() AS sqlite_version", null);
String sqliteVersion = "";
while(cursor.moveToNext()){
sqliteVersion += cursor.getString(0);
}
Esto es solo un fragmento de código sucio y rápido para recuperar la versión 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
3.5.9
Lo mismo en el emulador ADP1 1.6 y 2.1.
Una breve descripción general de las API de Andorid y las versiones de SQLite compatibles.
La descripción general proviene del enlace en la respuesta de Mark.