尝试环境:
Android2.2(源码) SDK
android-ndk-r7
尝试在NDK下面使用C语言做Android的sqlite3数据库存储功能。做了如下尝试:
在Android的源代码中找到sqlite3.h和libsqlite.so拷贝到NDK的lib(D:\android\android-ndk-r7-linux\platforms\android-3\arch-arm\usr\lib)和include(D:\android\android-ndk-r7-linux\platforms\android-3\arch-arm\usr\include)目录下。
测试代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <dirent.h> #include <errno.h> #include <sys/stat.h> #include <unistd.h> #include <time.h> #include <pwd.h> #include <sqlite3.h>
static int checkWhitelist() { sqlite3 *db; int rc = sqlite3_open_v2(DBPATH,&db,sqlITE_OPEN_READWRITE,NULL); if (!rc) { char *errorMessage; char query[1024]; sprintf(query,"select * from whitelist where _id=%d limit 1;",g_puid); struct whitelistCallInfo callInfo; callInfo.count = 0; callInfo.db = db; rc = sqlite3_exec(db,query,whitelistCallback,&callInfo,&errorMessage); if (rc != sqlITE_OK) { sqlite3_close(db); return 0; } sqlite3_close(db); return callInfo.count; } sqlite3_close(db); return 0; }
Android.mk: Android的make文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.c
#编译动态库
#include $(BUILD_SHARED_LIBRARY)
LOCAL_LDLIBS := -lcutils -lutils -lsqlite
#编译可执行程序
include $(BUILD_EXECUTABLE)
按照上面提示,依次从目标环境(源码或是你手机中)拷贝libcutils.so libicuuc.so libicui18n.so libutils.so libicudata.so到NDK的lib目录(见上)下。
原文地址:https://www.jb51.cc/sqlite/199891.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。