Android SQLite R-Tree – ¿Cómo instalar el módulo?

Http://www.sqlite.org/rtree.html dice que el árbol r * es "incluido como parte de la amalgamación pero está deshabilitado por defecto" y para habilitarlo "simplemente compilar con la macro de preprocesador SQLITE_ENABLE_RTREE C definida"

Bueno, quiero usar R-árboles en mi aplicación Android, pero claramente SQLite es todo pre-instalado, etc ¿Hay una manera de habilitarlo en el teléfono de un usuario / dispositivo?

Alternativamente, ¿es posible utilizar el NDK y el código fuente libremente disponible para SQLite?

Usted puede absolutamente compilar su propia versión de SQLite. Esto lo hacemos para habilitar los módulos de cifrado / codec de wxSQLite. Echa un vistazo a la fuente SQLite en el repositorio de Android Git. Básicamente es tan fácil y crea un Android.mk con las opciones (como SQLITE_ENABLE_RTREE) que te gustaría habilitar. Por supuesto, esto le dará una biblioteca nativa. Para usarlo necesitarás acceder desde el NDK o crear un wrapper (de nuevo, puedes mirar el repositorio de Android y las envolturas de Java / JNI a SQLite)

Esto funcionó para mí, extracto del archivo Android.mk. Es para spatialite, sqlite extensión espacial.

include $(CLEAR_VARS) # -DOMIT_GEOS=0 # ./configure --build=x86_64-pc-linux-gnu --host=arm-linux-eabi LOCAL_MODULE := spatialite LOCAL_CFLAGS := -D__ANDROID__ -Dfdatasync=fsync -DOMIT_GEOCALLBACKS -DSQLITE_ENABLE_RTREE LOCAL_LDLIBS := -llog LOCAL_C_INCLUDES := \ libiconv-1.13.1/include \ libiconv-1.13.1/libcharset/include \ geos-3.2.2/source/headers \ geos-3.2.2/capi \ proj-4.6.1/src LOCAL_SRC_FILES := \ ./libspatialite-amalgamation-2.4.0/spatialite.c \ ./libspatialite-amalgamation-2.4.0/empty.cpp \ ./libspatialite-amalgamation-2.4.0/sqlite3.c LOCAL_STATIC_LIBRARIES := iconv proj geos include $(BUILD_STATIC_LIBRARY) 

https://www.sqlite.org/android/doc/trunk/www/index.wiki da exactamente la respuesta a su pregunta y contiene una guía paso a paso para instalar SQLite para su aplicación con NDK / JNI.

Tenga en cuenta que tiene que agregar LOCAL_CFLAGS += -DSQLITE_ENABLE_RTREE en el archivo jni / sqlite / Android.mk como sugiere la documentación para compilar con R-Tree Module habilitado.

No olvide actualizar sus importaciones o se utilizará la base de datos SQLite predeterminada.

Junio ​​2017

  1. Ir a la página de descarga y agarrar sqlite-android-xxxxx.aar
  2. Cambiar el nombre a .aar en lugar de .zip
  3. Cree un proyecto sencillo con Android Studio ( sin necesidad de soporte de C ++)
  4. En el árbol del proyecto, haga clic con el botón derecho del ratón en app / new / Module, seleccione Importar .JAR / .AAR Package
  5. Seleccione el archivo renombrado, haga clic en finalizar
  6. En Android Studio vaya al menú: Archivo / Estructura del proyecto. Haga clic en la aplicación (en Módulos), seleccione la pestaña Dependencias, Añadir dependencia del módulo SQLite-android-xxxxx
  7. Antes de utilizar cualquier función SQLite, llame a: System.loadLibrary ("sqliteX");
  8. Sustituya las importaciones de SQlite por org.sqlite.database.sqlite.xxxxxx
  9. En onCreate puede realizar una prueba rápida con una base de datos de memoria:

     System.loadLibrary("sqliteX"); // get the SQLite version String query = "select sqlite_version() AS sqlite_version"; SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(":memory:", null); Cursor cursor = db.rawQuery(query, null); String sqliteVersion = ""; if (cursor.moveToNext()) { sqliteVersion = cursor.getString(0); } // do some R*Tree things (this will fail for the standard SQLite) db.execSQL("CREATE VIRTUAL TABLE demo_index USING rtree(id, minX, maxX, minY, maxY);"); db.execSQL("INSERT INTO demo_index VALUES(1,-80.7749, -80.7747, 35.3776, 35.3778);"); db.execSQL("INSERT INTO demo_index VALUES(2,-81.0, -79.6, 35.0, 36.2);"); cursor = db.rawQuery("SELECT id FROM demo_index WHERE minX>=-81.08 AND maxX<=-80.58 AND minY>=35.00 AND maxY<=35.44;", null); int id = -1; if (cursor.moveToFirst()) { do { id = cursor.getInt(0); } while (cursor.moveToNext()); } db.close(); 

Los enlaces (para todo lo anterior):

  • Fijaciones Android de SQLite
  • Instalación
  • Aplicación muy sencilla
  • Programación de aplicaciones
  • El módulo SQLite R * Tree
  • ¿Cómo se obtiene el tipo de un cursor?
  • Sqlite Seleccione Query con rawQuery en Android
  • Cambiar un valor en una columna en sqlite
  • ¿Cómo agregar datos iniciales a la base de datos SQLite?
  • Cómo hacer la sincronización bidireccional entre Android SQLite y SQL Server
  • Incremento automático de SQLite de Android
  • Android - BaseColumns y _id
  • Necesita ayuda para leer de la base de datos SQLite para Android
  • Problema de base de datos SQLite en TextView
  • Permiso de negación: esto requiere android.permission.INTERACT_ACROSS_USERS_FULL
  • Cómo utilizar la conexión SQLite desde la carpeta de activos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.