2dx 集成 CQ 莱特加密 II

在 1 中,集成了两个子项目 openssl 和 sqlcipher,

在实际生产中用起来并不是很好,因为有时候要对项目进行清理操作

这样的话,重新编译时就会耗费很多额外的时间

鉴于以上的情形,应该做一些改进,将子项目剔除掉,

改为直接引用这两个子项目所生成的静态库文件 libcrypto.a、libsqlcipher.a

下面列一下简要步骤吧(比集成子项目那个步骤简单多了):

1.在 2dx 工程根目录下建一个 libs 目录,用来存放 libcrypto.alibsqlcipher.a 物理文件,

然后再 2dx 工程中引用这两个静态库文件Build Phases->Link Binary With Libraries

这里提一个遇到的特殊情况,有时候再加入这两个静态库文件后编译会失败,

错误信息提示说找不到 libcurl.a 文件,不用害怕,

将这两个静态库文件移除后编译一次,编译成功后再重新添加一次即可。

2.打开 sqlite3 加密开关,在 Other C/C++ Flags中插入一行 -DSQLITE_HAS_CODEC

3.在 AppDelegate.cpp 的合适位置插入以下代码测试是否成功

#include <sqlite3.h>
#include <string>
using namespace std;

// sqlite encrypt test case
string t_oStrPath = CCFileUtils::sharedFileUtils()->getWritablePath() + "sqlcipher.db";
printf("%s\n", t_oStrPath.c_str());
sqlite3* db;
if (SQLITE_OK == sqlite3_open(t_oStrPath.c_str(), &db)) {
    string tmp_oStrPwd = "best";
    sqlite3_key(db, tmp_oStrPwd.c_str(), tmp_oStrPwd.length());
    
    string tmp_oStrSql = "CREATE TABLE  TestHaha (ROW INTEGER , FIELD_DATA TEXT);";
    char* tmp_pArrCharMsg = NULL;
    int t_iResult = sqlite3_exec(db, tmp_oStrSql.c_str() , NULL, NULL, &tmp_pArrCharMsg);
    printf("%s\n", tmp_pArrCharMsg);
    
    if (SQLITE_OK != t_iResult) {
        // password is correct, or, database has been initialized
        printf("password is correct, or, database has been initialized");
    } else {
        // incorrect password!
        printf("incorrect password!");
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值