5

http://www.sqlite.org/rtree.htmlは、r*tree は「合併の一部として含まれていますが、デフォルトでは無効になっています」と述べており、それを有効にするには「SQLITE_ENABLE_RTREE C プリプロセッサ マクロを定義してコンパイルするだけです」

AndroidアプリでRツリーを使用したいのですが、明らかにSQLiteはすべてプリインストールされています。ユーザーの電話/デバイスで有効にする方法はありますか?

または、NDK と自由に利用できる SQLite のソース コードを使用することは可能ですか?

4

4 に答える 4

2

独自のバージョンの SQLite を完全にコンパイルできます。これは、wxSQLite からの暗号化/コーデック モジュールを有効にするために行います。Android Git リポジトリの SQLite ソースを見てください。基本的には簡単で、有効にしたいオプション (SQLITE_ENABLE_RTREE など) を使用して Android.mk を作成します。もちろん、これによりネイティブ ライブラリが提供されます。これを使用するには、NDK からアクセスするか、ラッパーを作成する必要があります (ここでも、Android リポジトリと SQLite への Java/JNI ラッパーを確認できます)。

于 2011-06-01T15:29:07.593 に答える
1

This worked for me, extract from Android.mk file. It is for spatialite, sqlite spatial extension.

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)
于 2011-08-02T11:29:47.007 に答える
1

https://www.sqlite.org/android/doc/trunk/www/index.wikiには、質問に対する正確な回答があり、NDK/JNI を使用してアプリケーションに SQLite をインストールするためのステップバイステップのガイドが含まれています。

LOCAL_CFLAGS += -DSQLITE_ENABLE_RTREER-Tree モジュールを有効にしてコンパイルするには、ドキュメントで提案されているように jni/sqlite/Android.mk ファイルを追加する必要があることに注意してください。

インポートを更新することを忘れないでください。そうしないと、デフォルトの SQLite データベースが使用されます。

于 2014-12-23T21:23:50.627 に答える