Android SQLite R-Tree – как установить модуль?

Http://www.sqlite.org/rtree.html говорит, что дерево r * «включено как часть объединения, но отключено по умолчанию» и включить его «просто скомпилировать с установленным макросом C-препроцессора SQLITE_ENABLE_RTREE»

Ну, я хочу использовать R-деревья в своем приложении для Android, но, очевидно, SQLite предварительно установлен и т. Д. Есть ли способ включить его на телефоне или устройстве пользователя?

В качестве альтернативы можно ли использовать NDK и свободно доступный исходный код для SQLite?

Вы можете полностью скомпилировать собственную версию SQLite. Мы делаем это, чтобы включить модули шифрования / кодека из wxSQLite. Взгляните на источник SQLite в репозитории Android Git. В основном это так же просто и создание Android.mk с параметрами (например, SQLITE_ENABLE_RTREE), которые вы хотите включить. Конечно, это даст вам родную библиотеку. Чтобы использовать его, вам нужно получить доступ к нему из NDK или создать обертку (опять же, вы можете посмотреть на репозиторий Android и оболочки Java / JNI на SQLite)

Это сработало для меня, извлечение из файла Android.mk. Он предназначен для пространственного пространственного расширения sqlite.

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 дает точно ответ на ваш вопрос и содержит пошаговое руководство по установке SQLite для вашего приложения с NDK / JNI.

Обратите внимание, что вы должны добавить LOCAL_CFLAGS += -DSQLITE_ENABLE_RTREE в LOCAL_CFLAGS += -DSQLITE_ENABLE_RTREE / sqlite / Android.mk, как это было предложено в документации для компиляции с включенным R-Tree Module.

Не забудьте обновить свой импорт или использовать базу данных SQLite по умолчанию.

Июнь 2017 г.

  1. Перейдите на страницу загрузки и возьмите sqlite-android-xxxxx.aar
  2. Переименуйте его в .aar вместо .zip
  3. Создайте простой проект с Android Studio ( нет необходимости в поддержке на C ++)
  4. В дереве проекта щелкните правой кнопкой мыши app / new / Module, выберите Import .JAR / .AAR Package.
  5. Выберите переименованный файл, нажмите «Готово».
  6. В Android Studio перейдите в меню «Файл / Структура проекта». Нажмите приложение (в разделе «Модули»), выберите вкладку «Зависимости», «Добавить зависимость модуля SQLite-android-xxxxx»
  7. Перед использованием любых функций SQLite вызовите: System.loadLibrary ("sqliteX");
  8. Замените импорт SQlite на org.sqlite.database.sqlite.xxxxxx
  9. В onCreate вы можете выполнить быстрый тест с помощью базы данных памяти:

     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(); 

Ссылки (для всего вышеперечисленного):

  • Связанные темы
  • Монтаж
  • Очень простое приложение
  • Программирование приложений
  • SQLite R * Tree Module