SqliteCipher编译过程

1:环境

Ubuntu16.0.4

android studio 4.1.1

ndk r20 (官方推荐)

涉及到的项目有三个:

android-database-sqlcipher master v4.4.2

sqlcipher master v4.4.2

OpenSSL master OpenSSL_1_1_1i

2:OpenSSL编译

在这里插入图片描述

这是OpenSSL的目录结构,

这块是我们要执行编译的命令

export ANDROID_NDK_ROOT=/home/whoever/Android/android-sdk/ndk/20.0.5594570

PATH=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin:$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin:$PATH
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201231093152825.png)

./Configure android-arm64 -D__ANDROID_API__=29
make

如图当值行到./Configure…时,会提示我们配置ANDROID_NDK_HOME;

在这里插入图片描述

配置ANDROID_NDK_HOME后
在这里插入图片描述

执行make后,可以看到openssl路径下多出的文件:

在这里插入图片描述

3:编译android-database-sqlitecipher

SQLCIPHER_ROOT=/some/path/to/sqlcipher-folder \
OPENSSL_ROOT=/some/path/to/openssl-folder \
SQLCIPHER_ANDROID_VERSION="4.4.2" \
OPENSSL_ANDROID_LIB_ROOT=/some/path/for/android/native/lib/creation \
make build-release

如上,在makefile的 build-release中需要用到上述的四个变量。

在这里插入图片描述

所以,我在这里直接定义了

在这里插入图片描述

sqlcipher_root定义的是sqliteCipher总库的路径。

OpenSSL_root定义的是OpenSSL项目的路径

OpenSSL_Android_lib_root 是输出的路径,这里我定义在当前项目生成了android_out目录。

这里我们可以直接使用make build-release试着执行下
在这里插入图片描述

直接编译的话会提示我们缺少local.properties文件。

这里直接加个文件,定义好sdk路径就好。

接着就会执行native中的buildOpenssl 任务

在这里插入图片描述

继续编译:
在这里插入图片描述

在这里插入图片描述

然后看sqlcipher总库时发现了这个:
在这里插入图片描述

而执行任务时打印出来的

CFLAGS是个空的字符串。

sqlcipher中定义的默认值是:

  cflags =  "-DSQLITE_HAS_CODEC " +
                "-DSQLITE_SOUNDEX " +
                "-DHAVE_USLEEP=1 " +
                "-DSQLITE_MAX_VARIABLE_NUMBER=99999 " +
                "-DSQLITE_TEMP_STORE=3 " +
                "-DSQLITE_THREADSAFE=1 " +
                "-DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 " +
                "-DNDEBUG=1 " +
                "-DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 " +
                "-DSQLITE_ENABLE_LOAD_EXTENSION " +
                "-DSQLITE_ENABLE_COLUMN_METADATA " +
                "-DSQLITE_ENABLE_UNLOCK_NOTIFY " +
                "-DSQLITE_ENABLE_RTREE " +
                "-DSQLITE_ENABLE_STAT3 " +
                "-DSQLITE_ENABLE_STAT4 " +
                "-DSQLITE_ENABLE_JSON1 " +
                "-DSQLITE_ENABLE_FTS3_PARENTHESIS " +
                "-DSQLITE_ENABLE_FTS4 " +
                "-DSQLITE_ENABLE_FTS5 " +
                "-DSQLCIPHER_CRYPTO_OPENSSL " +
                "-DSQLITE_ENABLE_DBSTAT_VTAB"

将上述添加到buildnative的任务中后

这里直接编译通过:

在这里插入图片描述
这是整个项目编译的一个过程,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值