Привязки SQLite для Android
Библиотека SQLite является основной частью среды Android.Java-приложения и поставщики контента обращаются к SQLite с помощью интерфейса в пространстве имен android.database.sqlite.
Одним из недостатков использования встроенной поддержки Android SQLite в Android является то, что приложение вынуждено использовать версию SQLite, которая является текущей.версия Android, как оказалось, поставляется с.Если вашему приложению требуется более новая версия SQLite или сборка с установленным пользовательским расширением или VFS, вам не повезло.
Код в этом проекте позволяет приложению использовать Android NDK длясоздайте пользовательскую версию SQLite, которая будет поставляться с приложением, при этом продолжая использовать стандартный интерфейс Java.
Нормальное использование
Установка
Уровни API Android 15 (Android 4.0.3) и выше поддерживаются.Если выбран целевой уровень API 16 или выше, используйте ветвь по умолчанию «ствол» этого проекта.Или, для уровня API 15, используйте ветку "api-level-15".Невозможно установить целевой уровень API ниже 15.
Скопируйте следующие файлы из этого проекта в эквивалентные места в проекте приложения.
jni/Android.mk
jni/Application.mk
jni/sqlite/* (copy contents of directory recursively)
src/org/sqlite/database/* (copy contents of directory recursively)
После этого структуры каталоговдолжны содержать эти файлы.
Только для уровня API 15, также скопируйте следующее:
src/org/sqlite/os/* (copy contents of directory recursively)
Каталог "jni / sqlite /" содержит копии исходного кода sqlite3.h и sqlite3.cфайлы.Между ними они содержат исходный код библиотеки SQLite.При необходимости замените их источником для конкретной версии SQLite.Если SQLite нужно скомпилировать с какими-либо определенными макросами препроцессора, добавьте их в файл "jni / sqlite / Android.mk" (не jni / Android.mk).
После добавления файловв проект, запустите команду "ndk-build" в корневом каталоге проекта.Это компилирует собственный код в каталоге jni / (включая пользовательскую версию SQLite) в общие библиотеки, которые будут развернуты на устройстве вместе с приложением.Предполагая, что это успешно, если вы не измените исходные файлы или make-файлы в структуре каталогов jni /, вам не нужно снова запускать «ndk-build».
Программирование приложений
Классы, которые делаютвстроенный интерфейс Android SQLite находится в пространстве имен «android.database.sqlite».Этот интерфейс предоставляет все те же классы, за исключением пространства имен "org.sqlite.database.sqlite".Это означает, что для изменения приложения для использования пользовательской версии SQLite все, что обычно требуется, это заменить все вхождения «android.database.sqlite» в исходном коде на «org.sqlite.database.sqlite».
Например, следующее:
import android.database.sqlite.SQLiteDatabase;
следует заменить на:
import org.sqlite.database.sqlite.SQLiteDatabase;
, а такжезаменяя все виды использования классов в пространстве имен android.database.sqlite. *, приложение также должно обязательно использовать следующие два:
org.sqlite.database.SQLException
org.sqlite.database.DatabaseErrorHandler
вместо:
android.database.SQLException
android.database.DatabaseErrorHandler
Помимо изменений пространства имен, существуют и другие отличия от стандартного интерфейса Android, о которых приложения должны знать:
API-интерфейс SQLiteStatement.simpleQueryForBlobFileDescriptor () недоступен.Последовательность сопоставления "UNICODE" недоступна.Последовательность сортировки "LOCALIZED", которая обычно изменяется в зависимости от текущей локали системы, всегда эквивалентна встроенной в SQLite компоновке BINARY.