Android 数据库加密 android-database-sqlcipher 开源版本编译过程
转载请以链接形式标明出处: 本文出自:103style的博客
build android-database-sqlcipher
介绍
android-database-sqlcipher 用于 Android SQLite 数据库的加密。 维护者提供了 收费 和 开源 两个版本。 sqlcipher开发维护者官网:https://www.zetetic.net/sqlcipher/ github开源项目地址:android-database-sqlcipher
以下是笔者基于 开源版本 4.1.3 版本 编译之后生成文件的项目地址: android-database-sqlcipher
或者直接点击下载 4.1.3版本对应的aar包
。下载链接
使用方法
官方介绍:https://www.zetetic.net/sqlcipher/sqlcipher-for-android/
- 添加 aar 到 工程 libs 目录下,然后添加以下
android {
...
//此处看实际工程是否配置了统一的aar目录
repositories {
flatDir {
dirs 'libs'
}
}
...
}
dependencies {
...
api(name: "android-database-sqlcipher-4.1.3", ext: 'aar')
}
- 在初始化数据库的时候先调用
SQLiteDatabase.loadLibs(context);
- 用
import net.sqlcipher.database.SQLiteDatabase
替换import android.database.sqlite.SQLiteDatabase
- 用
import net.sqlcipher.database.SQLiteOpenHelper
替换import android.database.sqlite.SQLiteOpenHelper
- 可参考 Demo
编译方法
官方4.1.3版本 介绍的编译方法。感觉太简洁了,新手表示很难受
Building
In order to build android-database-sqlcipher from source you will need both the Android SDK as well as Android NDK.
With different Android SDK installation approaches available. We currently recommend using Android NDK version r15c.
To complete the make command, the ANDROID_NDK_ROOT environment variable must be defined which should point to your NDK root.
Once you have cloned the repo, change directory into the root of the repository and run the following commands:
# this only needs to be done once
make init
# to build the source for debug:
make build-debug
# or for a release build:
make build-release
笔者编程的过程 由于当前的版本 不支持windows下的编译,所以笔者只能走 Linux 环境了
更新jdk
为 openjdk 1.8.0 版本, 1.7.0的版本会报错
1.按Ctrl + Alt + T打开终端。打开后,运行下面的命令来添加PPA:
sudo add-apt-repository ppa:openjdk-r/ppa
2.之后,更新系统包缓存并安装OpenJDK 8:
sudo apt-get update
sudo apt-get install openjdk-8-jdk
3.如果您的系统上安装了多个Java版本。运行下面的命令设置默认的Java:
sudo update-alternatives --config java
键入一个数字以选择Java版本。
设置默认的java版本
并通过运行以下命令设置默认Java编译器:
sudo update-alternatives --config javac
4.最后通过运行以下步骤查看当前的Java版本:
java -version
它输出这样的东西:
openjdk版本“1.8.0_01-internal”
下载 Android Ndk r15c ,Linux版本 r15c上面官方文档推荐的版本
配置 sdk
、ndk
目录,以及添加ANDROID_NDK_ROOT
到path
,参考 Ubuntu profile,否则会报找不到ANDROID_NDK_ROOT
以及 A problem occurred starting process 'command 'ndk-build''
的错误。
export ANDROID_NDK_ROOT=/home/xiaoke/android-ndk-r15c
export ANDROID_HOME=/home/xiaoke/Android/sdk
export PATH=$PATH:$ANDROID_NDK_ROOT
- 安装 git , clone 项目 android-database-sqlcipher
- 用 Android Studio 打开工程,安装工程 编译的对应的sdk工具版本, 如果已安装对应sdk版本,会出现编译报错,没事,这是正常的,然后执行下一步就好。
- 定位到项目目录,执行以下编译命令
1. make init
2. make clean
3. make build-release
release版本混淆配置
-keep class net.sqlcipher.** { *; }
-keep class net.sqlcipher.database.* { *; }
运行报错问题
release版本运行报错问题 No pending exception expected: java.lang.NoSuchFieldError
这是因为没有添加以下混淆配置导致的
-keep class net.sqlcipher.** { *; }
-keep class net.sqlcipher.database.* { *; }
以上
相关文章
- android scaleanimation动画,【Android动画九章】-RotateAnimation(旋转动画)和ScaleAnimation(尺寸动画)…[通俗易懂]
- android bindservice方法,Android bindservice方法返回false
- android 读取本地数据库db文件(Android sqlite)
- Android UI设计
- android sdk manager设置国内镜像快速下载sdk
- android performClick使用
- android短信验证码代码,Android短信验证码自动填写实现代码
- Android Activity生命周期 之starting an activity
- android scaleanimation动画,Android 动画之ScaleAnimation应用详解「建议收藏」
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )
- 【Google Play】Android 应用隐私政策 ( 生成隐私政策 | HTML 隐私政策模板 | Markdown 隐私政策模板 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑧ ( 设置 Gradle 插件模块 | 将 Gradle 插件上传到自建 Maven 仓库 )
- 【Unity3D】Unity 中使用 C# 调用 Java ③ ( C# 调用 Java 实例 | 进行 Android 工程打包 | Android Studio 中运行 Android 工程 )
- [android] 看博客学习Android常见的几种RuntimeException详解手机开发
- Android中的ProgressBar的android:indeterminate详解手机开发
- JDBC从搭建服务器,到运行到Android全集锦!!详解编程语言
- Android端Chrome优化权限控制 让用户更轻松访问和管理站点权限
- android版本检测Android程序的版本检测与更新实现介绍
- android自定义Android菜单背景的代码
- Android访问php取回json数据实例
- 安装时加入外部数据库示例(android外部数据库)