【存储】Cocos2d-x集成wxSQLite3


【说明】

Cocos2d-x已经集成了SQLite3,但是并未做加密处理,处于安全考虑,一般不会直接使用。wxSQLite3是一个开源项目,是对SQLite3的C++封装,并做了加密处理,使用起来也很方便。这里介绍我集成wxSQLite3的过程,期间参考了其他大神的文章,后面已做说明。


【下载】

http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/


【集成】

1. 下载wxSQLite3后解压,将 wxsqlite3-3.2.1\sqlite3\secure\src 文件夹拷贝到项目中。

2. 由于wxSQLite3内部已经引用,所以在Xcode中只需要引用 “sqlite3.h” 和 “sqlite3secure.c” 两个文件,引用其他文件会导致编译出错。

3. 由于我们需要用到加密功能,所以需要在 “sqlite3.h” 和 “sqlite3secure.c” 两个文件中都添加启用加密宏定义。这里我没有使用预编译宏定义的方式,是因为我更倾向于使用平台无关的方式。但是这里要注意添加的位置,否则可能会编译出错。

#ifndef SQLITE_HAS_CODEC
#define SQLITE_HAS_CODEC
#endif


4. 到这里引入就已经完成了,如果编译遇到 “SQLITE_USER_AUTHENTICATION” 报错,将报错位置“#if”全部改为“#ifdef”即可,其他地方如有类似错误也可这样解决。

5. 以上是在Xcode上的集成过程,对于Android平台,需要编写一个一个 Android.mk 文件。这段借鉴网上文章,我还没实践。

LOCAL_PATH := $(call my-dir)

#清理变量定义
include $(CLEAR_VARS)

#模块名称
LOCAL_MODULE := wxsqlite3_static

#库文件名称
LOCAL_MODULE_FILENAME := libwxsqlite3

#定义预编译宏
LOCAL_CFLAGS += -DSQLITE_HAS_CODEC  ##该宏用于开启加密功能,我已经把定义写到代码里了,这里可以不要

#源文件
LOCAL_SRC_FILES := src/sqlite3secure.c


LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/src

#头文件目录
LOCAL_C_INCLUDES := $(LOCAL_PATH)/src

#构建静态库
include $(BUILD_STATIC_LIBRARY)
在 jni/Android.mk 中(不一定是这个,反正就是在应用的Android.mk中)添加引用:

<pre name="code" class="cpp">LOCAL_CFLAGS += -DSQLITE_HAS_CODEC                            #该宏用于开启加密功能  
  
LOCAL_WHOLE_STATIC_LIBRARIES += wxsqlite3_static         #引入静态库  
 
$(call import-module,../Classes/wxsqlite3)                              #引入模块 (Android.mk位置) 


 

【使用】

使用部分可以参考Cocos2d-x自带的 LocalStorage 类,加密功能需要在 “sqlite3_open()” 和 “sqlite3_close()” 之间调用 “sqlite3_key()” 设置密码。

        // SET KEY
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
        sqlite3_key(_db, key.c_str(), (int)key.size());
#endif


【代码】

最后附上我封(xiu)装(gai)的类,基本上都是 LocalStorage 的代码,只做了一点点修改。原本我是做成单例模式的,后来打算把集中存储合并到一个存储类里面,方便使用,就改成了普通类。前面才是重点,这部分不重要。

//==================
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值