【Cocos2d-x】整合wxSqlite3到Cocos2d-x
關於wxSqlite3
wxSqlite3是一個輕量級的開源資料庫專案,基於sqlite3,相比sqlite3增加了資料庫加密功能,是用C語言實現的,跨平臺。
下載wxsqlite3
下載地址:https://github.com/utelle/wxsqlite3
整合wxsqlite3到Cocos2d-x
1.在cocos2d-x引擎external目錄下新建wxsqlite3\src目錄
2.把wxsqlite3-3.1.1\sqlite3\secure\src目錄下的.h和.c檔案拷貝到wxsqlite3/src目錄下
3.新增sqltesecure.c到libLocalStorage專案中。(Cocos2d-x2.x是新增到libExtensions專案)
4.設定預編譯巨集:SQLITE_HAS_CODEC,該巨集用於開啟加密功能。
5.相關api
(1). 設定密碼(在sqlite3_open和sqlite3_close之間任何地方使用)
int sqlite3_key(
sqlite3 *db, //資料庫引用
const void *pKey, //密碼
int nKey //密碼長度
);
(2). 修改密碼(在sqlite3_open和sqlite3_close之間任何地方使用)
int sqlite3_rekey(
sqlite3 *db, //資料庫引用
const void *pKey, //新密碼
int nKey //密碼長度
);
示例:在LocalStorage.cpp中的localStorageInit方法中初始化資料庫時設定密碼
測試工程svn地址:http://code.taobao.org/svn/wxsqlite3_cocos2dx/trunk
編譯到Android
1.在external\wxsqlite目錄下新增Android.mk檔案,檔案內容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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)
|
來自CODE的程式碼片
2.工程中引入wxsqlite3靜態庫
cocos2d-x3.x:修改cocos2d\cocos\storage\local-storage目錄下的Android.mk檔案如下
cocos2d-x2.x:修改cocos2d-x-2.x\extensions目錄下的Android.mk檔案如下,直接把加密功能增加到引擎擴充套件庫
3.Cocos2d-x引擎在Android平臺下預設是通過Jni呼叫android sdk自帶的SQLiteOpenHelper和SQLiteDatabase去建立和運算元據庫的,所以在Android下使用wxsqlite3,需要進行以下幾個步驟:
(1).註釋LocalStorage.cpp中對於安卓平臺的判斷巨集
(2).修改Android.mk:Cocos2d-x對Android平臺下資料庫的操作封裝在LocalStorageAndroid.cpp,現在修改為使用LocalStorage.cpp,使用跨平臺的wxsqlite3
Cocos2d-x3.0:修改cocos2d\cocos\storage\local-storage目錄下的Android.mk,刪除LOCAL_SRC_FILES欄位中的LocalStorageAndroid.cpp
Cocos2d-x2.0:修改cocos2d-x-2.x\extensions目錄下的Android.mk,修改LOCAL_SRC_FILES欄位中LocalStorageAndroid.cpp為LocalStorage.cpp
現在編譯工程,就可以了。生成資料庫檔案應該在/data/data/包名/files目錄下,如果加密成功了,使用sqlite檢視器開啟應該會失敗。
編譯到IOS
1.開啟iOS工程,右鍵Add File,新增wxsqlite3資料夾到工程。
只保留sqlite3.h和sqlite3secure.c的引用即可。
2.點選工程——Build Settings——設定預編譯巨集(SQLITE_HAS_CODEC),開啟加密功能
3.編譯成功!
(原文地址:http://blog.csdn.net/linchaolong/article/details/41286297)
API使用說明:
sqlite3_key是輸入金鑰,如果資料庫已加密必須先執行此函式並輸入正確金鑰才能進行操作,如果資料庫沒有加密,執行此函式後進行資料庫操作反而會出現“此資料庫已加密或不是一個資料庫檔案”的錯誤。
int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定資料庫,pKey 是金鑰,nKey 是金鑰長度。例:sqlite3_key( db, "abc", 3);
sqlite3_rekey是變更金鑰或給沒有加密的資料庫新增金鑰或清空金鑰,變更金鑰或清空金鑰前必須先正確執行 sqlite3_key。在正確執行 sqlite3_rekey 之後在 sqlite3_close 關閉資料庫之前可以正常運算元據庫,不需要再執行 sqlite3_key。
int sqlite3_rekey( sqlite3 *db, const void *pKey, int nKey),引數同上。
清空金鑰為 sqlite3_rekey( db, NULL, 0)。
相關文章
- Gradle在cocos2d-x(2.x)遊戲中整合Gradle遊戲
- Learning Cocos2d-x for XNA(1)——小窺cocos2d-x框架框架
- Cocos2d-x 2.0 渲染到紋理深入分析
- cocos2d-x遊戲引擎遊戲引擎
- Cocos2D-x從C++到JS的進階之路C++JS
- cocos2d-x lua LuaJavaBridgeJava
- cocos2d-x 解除安裝
- 【cocos2d-x從c++到js】01:迎接指令碼時代的到來C++JS指令碼
- cocos2d-x 手遊原始碼站原始碼
- cocos2d-x 學習資源
- 移植一個cocos2d-x遊戲遊戲
- cocos2d-x 的環境搭建
- 我所理解的Cocos2d-x
- cocos2d-x專案建立和打包
- cocos2d-x 開發用到的工具
- Cocos2d-x記憶體管理(一)記憶體
- Cocos2d-x記憶體管理(二)記憶體
- Cocos2d-x 的“HelloWorld” 深入分析
- 【支付】Cocos2d-x IOS內購(IAP支付)iOS
- Cocos2d-x客戶端資源加密客戶端加密
- Cocos2D-x for XNA類解析(1): CCApplicationAPP
- Cocos2D-X for XNA遊戲開發指南遊戲開發
- cocos2d-x 2.2 開發手記2
- cocos2d-x quick 學習 二 Hello worldUI
- cocos2d-x quick 學習 一 環境UI
- cocos2d-x手機遊戲開發——序遊戲開發
- cocos2d-x的LayoutParameter佈局深入理解
- cocos2d-x自制工具06:AnimatePacker原始碼薦原始碼
- cocos2d-x綁lua的開發環境開發環境
- cocos2d-x畫素級觸控處理
- Android上執行cocos2d-x專案Android
- VS開發cocos2d-x常見錯誤
- cocos2d-x遊戲中音樂音效的處理遊戲
- cocos2d-x與ios記憶體管理分析iOS記憶體
- 【cocos2d-x從c++到js】07:cxx-generator JS繫結工具薦C++JS
- cocos2d-x本地化/多語言適配
- Cocos2d-x 資源加密解密實踐總結加密解密
- cocos2d-x 場景動畫切換過渡大全動畫