配置开发库FMDB支持加密、***.xcconfig的用法以及提供一个免费的数据库管理app

来源:互联网 发布:三维图软件 编辑:程序博客网 时间:2024/06/06 18:22

FMDB默认是不支持加密的,而且行业里也有提供加密的sqlite开发库,但大多数是需要收费的,并且支持加密的数据库管理应用也是收费。今天在这里我给大家集成一个免费的加密库,还支持跟FMDB对接的:SQLCipher,同时提供一个自己研发一个简单支持加密的数据库管理应用(mac版本)源码下载:

https://github.com/wuyoujian0313/SQLiteManager


要集成FMDB支持加密,就需要把SQLCipler集成进来,一般有两种方式(我个人采用第二种)

第一种,采用pod方式来集成:

platform :ios, '6.0'

target "FMDB-encrypt"do

pod 'FMDB'

pod 'FMDB/SQLCipher'

end


对于这种方式,大家可以百度一下;


第二种,采用源码的方式集成:

1、我们需要创建一个.xcconfig文件,里面输入:

SQLCIPHER_OTHER_CFLAGS = $(inherited) -DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE -DSQLCIPHER_CRYPTO_CC

OTHER_CFLAGS = $(inherited) ${SQLCIPHER_OTHER_CFLAGS}

上面的意思就是在工程的Build Settings里增一个配置同时修改一个配置;要试他生效就需要把这个xcconfig文件导入到工程里,然后在工程的project配置里的:如图配置:


只有导入工程里的xcconfig文件这里才能够看到到。编译一下工程,你可以去target的Building Settings里找到刚刚配置的那两项;这两项本质上就是给工程增加一个编译宏,因为SQLCipher的sqlite3.h和sqlite3.m以及FMDB里需要通过这些宏打开支持加密;


这里讲到了xcconfig文件,我们可以用于其他的一些配置,这些配置怎么找到,可以用文本的方式打开工程文件:xcodeproj里的配置文件,可以找到对应的Building Settings里的配置宏。


最后把SQLCipher的sqlite3.h和sqlite3.m导入到工程里,后面的使用,可以参考下面代码:


   BOOL bSuc = [selfopenDB:dbFile];

    if (!bSuc) {

        returnnil;

    }

    

    if(key !=nil && [keylength] >0){

        [_dbsetKey:key];

    }


    [_dbsetShouldCacheStatements:YES];

    FMResultSet *rs = [_dbexecuteQuery:sql];




0 0
原创粉丝点击