接入 WCDB
Android 项目接入 WCDB,可以选择通过 Maven 接入或通过 AAR 包接入。
通过 Maven 接入
对于大部分开发者,推荐使用 Maven 接入 WCDB,在 APP 模块的 build.gradle 下添加 WCDB 依赖即可
dependencies {
// 修改"1.0.0"为实际引用的版本
compile 'com.tencent.wcdb:wcdb-android:1.0.0'
}
- 通过 AAR 包接入
你也可以从发布页面下载 AAR 包,然后导入到工程来接入 WCDB。
在 Android Studio 选择 File -> New -> New Module... -> Import JAR/AAR Package
在 File -> Project Structure... 或编辑 APP 模块的 build.gradle 将 WCDB 加入依赖项:
dependencies {
compile project(':wcdb')
}
- 选择接入的 CPU 架构
WCDB 包含 armeabi, armeabi-v7a, arm64-v8a, x86 四种架构的动态库,如果你的应用希望只接入 其中一种或几种架构,可以在 APP 模块的 build.gradle 里加入以下代码来选择要接入的架构:
android {
defaultConfig {
ndk {
// 只接入 armeabi-v7a 和 x86 架构
abiFilters 'armeabi-v7a', 'x86'
}
}
}
迁移到 WCDB
- WCDB android 使用与 Android SDK SQLite 框架几乎一样的接口
- 如果你的 APP 之前使用 Android SDK 的数据库接口,只需要将 import 里的 android.database.* 改为 com.tencent.wcdb.,以及 android.database.sqlite. 改为 com.tencent.wcdb.database.* 即可。
- 若之前使用 SQLCipher Android Binding,也需要对应修改 import。
加密与非加密数据库差异只有打开时,打开后后续操作与 Android SDK 一致。具体请参考 WCDB API 文档。
从非加密数据库迁移到加密数据库
如果你之前使用的是非加密数据库,接入后想迁移到加密数据库并保留原来的数据,你需要使用 SQL 函数 sqlcipher_export() 进行迁移。
详情请见 sample-encryptdb 示例,它示范了如何使用 SQLiteOpenHelper 实现数据从非加密往加密迁移和 Schema 升级。
注意: WCDB 对 sqlcipher_export() 函数做了扩展,原本只接受一个参数为导出到哪个 ATTACHED DB, 现在可以接受第二个参数指定从哪个 DB 导出。因此可以反过来实现导入:
ATTACH 'old_database' AS old;
SELECT sqlcipher_export('main', 'old'); -- 从 'old' 导入到 'main'
DETACH old;
从 SQLCipher Android 迁移
如果你之前使用的是 SQLCipher 数据库,希望迁移到 WCDB 库并沿用原数据库文件,需要在代码里做一点改动。
String passphrase = "passphrase";
SQLiteCipherSpec cipher = new SQLiteCipherSpec() // 加密描述对象
.setPageSize(1024) // SQLCipher 默认 Page size 为 1024
.setSQLCipherVersion(3); // 1,2,3 分别对应 1.x, 2.x, 3.x 创建的 SQLCipher 数据库
// 如以前使用过其他PRAGMA,可添加其他选项
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(
"path/to/database", // DB 路径
passphrase.getBytes(), // WCDB 密码参数类型为 byte[]
cipher, // 上面创建的加密描述对象
null, // CursorFactory
null // DatabaseErrorHandler
// SQLiteDatabaseHook 参数去掉了,在cipher里指定参数可达到同样目的
);
- 关键改动点为 密码转换为byte[] 以及 传入SQLiteCipherSpec描述加密方式, 加密方式必须和之前的 SQLCipher 设置一致,否则会报错误,建议先行测试再上线。
- SQLCipher 密码与加密方式错误可能会导致 SQLite 框架认为其损坏从而触发 DatabaseErrorHandler, 默认实现会重命名或删除损坏 DB,如果此行为不是你希望的,请务必自定义 DatabaseErrorHandler。
*注意*如果之前调用了 SQLCipher 的 SQLiteDatabase.loadLibs(…),可以将其删去,WCDB 在第一次引用时会自动加载动态库。
引用
接入与迁移
https://github.com/Tencent/wcdb/wiki/Android
- 大小: 51.1 KB
分享到:
相关推荐
WCDB for iOS/macOS Features Easy-to-use. Through WCDB, you can get objects from database in one line code. WINQ (WCDB language integrated query): WINQ is a native data querying capability which ...
腾讯开源微信数据库框架WCDB,他是一个高效、完整、易用的移动数据库框架,基于SQLCipher,支持iOS, macOS和Android。 博客地址: http://blog.csdn.net/androidstarjack 公众号: 终端研发部
WCDB,全称为WeChat Database,是由微信团队开源的一个强大且高效的移动数据库框架。这个框架主要针对iOS、macOS和Android平台,旨在提供一个统一、稳定且安全的数据存储解决方案。WCDB基于SQLCipher,这意味着它在...
wcdb:https://github.com/Tencent/wcdb/wiki/Android接入与迁移 sqlcipher:https://github.com/sqlcipher/android-database-sqlcipher js脚本 Java.perform(function () { //wcdb try { const SQLiteConnection ...
iOS-Swift 数据库 WCDB 二次封装使用/自定义字段映射类型
WCDB for iOS/macOS Features Easy-to-use. Through WCDB, you can get objects from database in one line code. WINQ (WCDB language integrated query): WINQ is a native data querying capability which frees ...
在使用版本控制系统Subversion(简称SVN)时,有时用户可能会遇到“wcdb”相关的错误,这通常是由于工作副本(Working Copy)的数据损坏或者数据库文件出现异常导致的。"svn clean up"是SVN的一个命令,用于清理工作...
Were you ever in a situation where you had to access android Resources based on their names (for example if the names are stored in a DB) and you had to write long lookup tables converting the names ...
c语言
在Android开发领域,掌握各种UI组件的使用以及有效的架构模式是非常关键的。"android组件demo代码"这个项目提供了一系列的示例,旨在帮助开发者更好地理解和应用Android中的UI元素,特别是ListView,以及简单的MVC...
- **WCDB**是微信团队为了解决上述问题而自主研发的一款高性能数据库组件,具有以下特点: - 支持高效并发处理。 - 提供自动备份与修复功能。 - 用户接口友好,易于集成。 - **ORM支持**:提供了简单的ORM(对象...
技术文档分享,免费获取请私信博主。
在此基础上,其他如wcdb和mmkv等跨平台组件也随之发展起来,为微信客户端的业务和UI开发提供了坚实的基础。 随着内部业务的快速变化,微信团队寻求一种能快速迭代且体验一致的跨平台开发方式。小程序的出现提供了一...
【DataBaseDemo】是一个示例项目,它展示了如何利用微信开源的WCDB数据库框架来构建和管理数据库。WCDB是一款高效、稳定且功能丰富的数据库解决方案,适用于Android和iOS平台,为移动应用开发提供了便利的数据存储与...
WCDB是微信团队开源的一个现代化的SQLite库,支持Objective-C和Swift,提供了更高效、更安全的数据操作方式: 1. **安装**:WCDB同样可以通过CocoaPods或Swift Package Manager进行集成。 2. **配置与初始化**:...
来自WCDB的SQLite修复框架,两行代码解决SQLite损坏问题!
- 消息的撤回、删除、复制、重发 - WCDB数据库 - 语音、文字、图片 - 未读人数 - 项目中自定义的其他消息样式 - 实际项目中有云盘、视频播放、朋友圈... 有问题可以留言哦
frida 对企业微信的hook脚本hook_art.js 的运行日志 [RegisterNatives] java_class: com.tencent.wcdb.CursorWindow name: nativeDispose sig: (J)V fnPtr: 0x8c84d2f5 module_name: libwcdb.so module_base: 0x8c...
java安卓仿微信聊天软件源码 Awesome Stars A curated list of my GitHub stars! Generated by Contents C - A curated list of awesome things related to HarmonyOS. 华为鸿蒙操作系统。 - :fire:RxFFmpeg 是基于 ...
数据库操作FMDB和WCDB的封装,以及Realm数据库,增删查改,和本地搜索 通过创建创建单例的形式,进行创建数据库,全局可以使用 //创建表是否成功 -(BOOL)openFMDBName:(NSString *)pathStr; /** * 增加 */ -(BOOL)...