zoukankan      html  css  js  c++  java
  • Android数据库加密之sqlciher方案

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载请表明出处:http://www.cnblogs.com/cavalier-/p/6241964.html

    前言

    大家好,我是Cavalier,这次和大家分享的主题是数据库加密。当今移动互联网数据安全至关重要,而数据库是Android常用的数据持久化方案,但是原生的sqLite并不支持密码加密,目前常用的数据库加密方式大部分是字段加密,或者是内容加密。这里特别推荐使用sqlcipher的数据库加密方案,使用与原生一致,(sqlcipher-android的Github地址请戳),下面分享一下源码编译的过程和遇到的错误。

    编译前奏

    博主当前环境是:
    Mac ox 10.12.2 (16C67)
    Java 1.8.0_112
    Ant 1.9.8
    Android NDK 12.1.3345770

    下载源码

    (sqlcipher-android的Github地址请戳)

    从上面提供的地址中克隆下来(tip:我尝试了直接下载源码ZIP包,但是在后面的编译中会报错,报错内容看文后)
    git clone https://github.com/sqlcipher/android-database-sqlcipher.git
    从github克隆源码非常慢...
    克隆下来后,就可以直接运行make命令了
    make init
    执行完后再执行make就好了
    make
    当make执行完后,会在目录下生成libs目录,里面就有了咱们需要的jar包和so动态库

    遇到的问题

    1.make init 没问题,但是执行make时报如下错误:

    ant relese
    permission denied
    

    这个错误,我尝试了sudo -s命令发现没效果,尝试修改了源文件的权限也不行,但是我尝试了which ant 发现报了not fond,修复方案就是从Apache下载一个最新版本的Ant,解压后添加进系统变量
    open ~/.bash_profile
    打开后添加自己的路径
    export ANT_HOME=(此处填写你刚下载的Ant绝对路径)
    export PATH=${ANT_HOME}/bin:$PATH
    配置环境变量
    source ~/.bash_profile
    这时输入
    ant -version

    如果输出具体版本号即为配置成功,配置ant成功后即可以重新make一下就好了

    2.ant也确定安装没问题,但是make还是报错,错误如下:

    Unable to locate tools.jar
    

    这时就需要检查一下环境变量中JAVA_HOME和CLASSPATH的配置,正确的配置应该如下

    export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home"
    export PATH=${JAVA_HOME}/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export CLASSPATH
    

    重新配置后就可尝试make一下即可成功编译

    3.检查过JAVA_HOME没问题,ANT_HOME也没问题,但是还是编译不成功,错误如下:

    Buildfile: build.xml does not exist!
    Build failed
    make: *** [build-java] Error 1
    

    这个就说明源码中是没有带build.xml的,这时咱们可以通过如下命令生成一个

    android update project --target 1 --path ./ --subprojects
    

    这时会在源码目录中多出一个build.xml,重新make一下就好了

    sqlcipher的使用

    如原生的数据库操作一致

    特别注意事项

    由于Android平台4.0到7.0跨度太大,以至于如果项目是用旧的动态库会报一个警告,且这个警告是不可控的,对用户体验非常不好。推荐使用当前最新版本即可

    总结

    希望大家通过如上简单的介绍后,对sqlcipher源码编译没有问题。

    以上纯属个人经验,喜欢的请点个推荐哦,如有错误请指出,谢谢大家,。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载请表明出处:http://www.cnblogs.com/cavalier-/p/6241964.html

  • 相关阅读:
    课时十一、HMM(隐马尔科夫模型)
    课时十、主题模型(LDA)
    课时九、贝叶斯网络
    课时八、EM算法(最大期望算法)
    课时七、聚类
    课时六、SVM
    如何查看预收录在arXiv上论文的LaTeX源文件并编译
    MySQL事务与锁——总结篇
    BAIRE ONE FUNCTIONS (Baire第一类函数)
    flask_sqlalchemy之查询
  • 原文地址:https://www.cnblogs.com/cavalier-/p/6241964.html
Copyright © 2011-2022 走看看