首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓SQLite R-Tree -如何安装模块?

安卓SQLite R-Tree -如何安装模块?
EN

Stack Overflow用户
提问于 2011-05-26 08:16:38
回答 4查看 5.1K关注 0票数 5

http://www.sqlite.org/rtree.html说r*树“包含在合并中,但默认情况下是禁用的”,要启用r*树,“只需使用定义的SQLITE_ENABLE_RTREE C预处理器宏进行编译”。

嗯,我想在我的安卓应用程序中使用R-trees,但显然SQLite都是预装的,等等。有没有办法在用户的手机/设备上启用它?

或者,可以使用NDK和SQLite的免费源代码吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-01 23:29:08

你完全可以编译你自己的SQLite版本。我们这样做是为了从wxSQLite启用加密/编解码器模块。看看Android Git存储库中的SQLite源代码。基本上,使用您希望启用的选项(如SQLITE_ENABLE_RTREE)创建一个Android.mk非常简单。当然,这将为您提供一个本地库。为了使用它,你需要从NDK访问它或者创建一个包装器(同样,你可以查看SQLite的Android仓库和Java/JNI包装器)

票数 2
EN

Stack Overflow用户

发布于 2017-06-20 21:01:11

2017年6月

  1. 转到:download page并抓取它到.aar而不是.zip
  2. 使用Android Studio创建一个简单的项目(不需要新的支持) C++在项目树中右键单击app / new /
  3. 选择Import .JAR/.AAR Package
  4. Select重命名的文件,在Android Studio中单击finish<>H213
  5. 转到菜单:文件/项目结构。单击app (在模块下),选择Dependencies选项卡,使用任意SQLite函数添加模块依赖项,调用: System.loadLibrary("sqliteX");
  6. Replace SQlite imports to org.sqlite.database.sqlite.xxxxxx
  7. In onCreate您可以使用内存数据库进行快速测试:

System.loadLibrary("sqliteX");//获取SQLite版本String query = "select sqlite_version() AS sqlite_version";SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(":memory:",null);System.loadLibrary= db.rawQuery(query,null);String sqliteVersion = "";if (cursor.moveToNext()) { sqliteVersion = cursor.getString(0);} //做一些R*树的事情(对于标准的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和maxY<=35.44;",null);int id = -1;if (cursor.moveToFirst()) { do { id = cursor.getInt(0);} while (cursor.moveToNext());} db.close();

链接(以上所有链接):

票数 4
EN

Stack Overflow用户

发布于 2011-08-02 19:29:47

这对我来说很有效,从Android.mk文件中提取。它是用于spatialite、sqlite的空间扩展。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6132442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档