在flutter中集成1flutter中使用ffi调用SqlCipher移动端闲话编程Contents源码编译 ............................................................................................... 1在flutter中集成 ...................................................................................... 1创建插件平台集成生成整合的代码集成安卓集成编译集成调用兼容性 .................................................................................................. 3目前在中调用有成熟的插件例如,而我需要,并同时加载扩展,现有的插件并不能直接支持。因此需要创建一个插件来做这个事情。在以前平台集成相当麻烦,而现在有了之后,可以直接调用原生代码,虽然还在试验阶段但终究是大势所趋。源码编译源码编译比较简单,但是如果要运行其测试,在上还是有些折腾。运行测试需要,自带的无法使用()下载并编译安装:cd tcl8.6.10/unix./configuremakesudo make install然后可以跑的测试make test。而要编译,也有一些选项需要设置,cd sqlcipher/build./configure --enable-tempstore=no \ --with-crypto-lib=none \ --enable-fts5 \ CFLAGS="-DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_TEMP_STORE=3 -DSQLITE_HAS_CODEC -I/usr/local/opt/openssl/include/" \ LDFLAGS="/usr/local/opt/openssl/lib/libcrypto.a"在flutter中集成创建插件首先需要创建一个插件:flutter create \ --platforms=android,ios \ 在flutter中集成2 --org=com.riguz \ --template=plugin \ -i swift \ -a java \ native_sqlcipher升级之后,必须指定--platforms=android,ios才会生成和的响应工程。平台集成生成整合的代码最直接的方式是将(其中已经包含了的代码)整合到一个文件中(称之为版本,运行速度会更快一些)git clone https://github.com/sqlcipher/sqlcipher.gitcd sqlciphermkdir build../configure --with-crypto-lib=none --enable-fts5make sqlite3.c生成完之后,会得到一个和。如果希望在上也编译出来,可以./configure --enable-tempstore=no \ --with-crypto-lib=none \ --enable-fts5 \ CFLAGS="-DSQLCIPHER_CRYPTO_OPENSSL -DSQLITE_TEMP_STORE=3 -DSQLITE_HAS_CODEC -I/usr/local/opt/openssl/include/" \ LDFLAGS="/usr/local/opt/openssl/lib/libcrypto.a"ios集成将和代码拷贝到插件的目录中,然后需要修改插件的文件(单纯在里面修改无法保存,每次之后就会丢失),需要将一些参数加进去:Pod::Spec.new do |s| s.name = 'native_sqlcipher' # ... # 尽管之前configure的时候已经指定了SQLITE_ENABLE_FTS5,但是这里还需要再设置一次才能将fts5扩展编译进去 s.frameworks = 'Security' s.xcconfig = { 'OTHER_CFLAGS' => '-DSQLITE_ENABLE_FTS5 -DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=3 -DSQLCIPHER_CRYPTO_CC -DNDEBUG' } # ...end安卓集成编译OpenSSL下载,当前最新为。其编译说明可以参照文档。 兼容性3export ANDROID_NDK_HOME=/Users/hfli/Library/Android/sdk/ndk/21.3.6528147 PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin:$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin:$PATH ./Configure android-arm64 -D__ANDROID_API__=29 make对于其他平台需要重新然后编译:#./Configure android-arm -D__ANDROID_API__=29#./Configure android-arm64 -D__ANDROID_API__=29#./Configure android-x86 -D__ANDROID_API__=29./Configure android-x86_64 -D__ANDROID_API__=29make cleanmake默认生成的是带有后缀的,(类似,因为安卓打包的时候不支持,解决办法是在的时候覆盖掉参数:make SHLIB_VERSION_NUMBER= SHLIB_EXT=.so集成sqlcipher调用参见。兼容性依赖一个非标准的选项,但是这个选项最近已经被移除了,目前包含的的版本为,而最新为。目前尚不知道后续的支持计划。参考: