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

转载请表明出处: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

Android数据库加密之sqlciher方案的更多相关文章

  1. Android 数据库加密

    一 一个简短的引论   SQLite是一个轻量的.跨平台的.开源的数据库引擎.它的读写效率.资源消耗总量.延迟时间和总体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方式(如Android.i ...

  2. SpringBoot使用Druid数据库加密链接完整方案

    网上的坑 springboot 使用 Druid 数据库加密链接方案,不建议采用网上的一篇文章<springboot 结合 Druid 加密数据库密码遇到的坑!>介绍的方式来进行加密链接实 ...

  3. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  4. Android数据库(sqlite)加密方案

    最近因为一些项目的安全性需要将数据库加密,一开始想到的就是先将数据库通过AES加密,然后运行时再解密,另一种是将数据库里的内容加密. 很快这两种方案都是不理想的,第一种加密方式形同虚设,第二种,如果加 ...

  5. Android DB那些事-数据库加密

    说到数据库加密,目前最好且唯一的方案就是SqlCipher对sqlite3整体加密,微信也用的它.开源,且支持很多平台. 单就Android来说,集成不算太麻烦,1个jar包,3个so库,1个zip. ...

  6. Android Sqlite数据库加密

    Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...

  7. [DB那些事]数据库加密

    说到数据库加密,目前最好且唯一的方案就是SqlCipher对sqlite3整体加密,微信也用的它.开源,且支持很多平台. 单就Android来说,集成不算太麻烦,1个jar包,3个so库,1个zip. ...

  8. iOS 使用FMDB SQLCipher给数据库加密

    关于SQLite,SQLCipher和FMDB SQLite是一个轻量的.跨平台的.开源的数据库引擎,它的在读写效率.消耗总量.延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案 ...

  9. Android Learning:数据存储方案归纳与总结

    前言 最近在学习<第一行android代码>和<疯狂android讲义>,我的感触是Android应用的本质其实就是数据的处理,包括数据的接收,存储,处理以及显示,我想针对这几 ...

随机推荐

  1. 如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?

    如何禁止 Mac OS X 在外接设备上生成 .DS_Store 文件?以及如何批量删除 .DS_Store 文件?原文链接:http://www.java2class.net/bbs/viewthr ...

  2. KBMMW 中 IOS IPv6 的解决

    自从今年苹果强制新上架的APP 必须支持Ipv6,很多原来需要网络支持的APP 就没法上架了. 别的我们就不说了,先说说kbmmw 中,如何解决这个问题. 要测试你的app 是否支持ipv6, 首先要 ...

  3. MySql开始日期、结束日期查询

    str_to_date('2016-08-24', '%Y-%m-%d %H') validStartTime str_to_date('2016-09-16', '%Y-%m-%d %H') val ...

  4. php编码规范

    PHP 文件格式 1.对于只包含有 PHP 代码的文件,结束标志("?>")是不允许存在的,PHP自身不需要("?>"), 这样做, 可以防止它的末 ...

  5. Ajax嵌套调用 (jquery) $.ajaxSettings.async = false;

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. group_concat函数使用

    t1表 语句: select type,group_concat(name) from t1 group by type 结果

  7. Modelica学习

    Annotation Choices for Suggested Redeclarations and Modifications Replaceable model sample(start,int ...

  8. BIRT报表工具,直接导出EXCEL

    BIRT是一款基于JAVA的免费开源报表工具,使用起来也挺方便. 有时你可能不需要在浏览器中展示报表,然后在点击导出按钮保存为EXCEL, 这里提供一种方式,直接把报表导出为EXCEL下载. JS代码 ...

  9. 一个不错的loading效果--IT蓝豹

    一个不错的loading效果 介绍:一个不错的loading加载效果,弹性收缩,效果不错,学习android动画的朋友可以下载来研究研究本例子其实由SeekBar实现,由MetaballView,Me ...

  10. unity3d 孤岛求生基础案例

    第二个案例,此案例主要实现了第一人称控制器,把移动从世界坐标系转化到人物平面坐标系,通过碰撞器,触发器,光线透射触发器实现交互.实现UI texture记录收集信息,ui texture是更新内容对应 ...