微信 WCDB for Android的接入

接入 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

Markdown

  • 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。

Markdown

*注意*如果之前调用了 SQLCipher 的 SQLiteDatabase.loadLibs(…),可以将其删去,WCDB 在第一次引用时会自动加载动态库。

接入与迁移

https://github.com/Tencent/wcdb/wiki/Android

Markdown

相信自己,没有做不到的,只有想不到的

如果你觉得此文对您有所帮助,欢迎入群 QQ交流群 :232203809
微信公众号:终端研发部

Markdown

(这里 学到的不仅仅是技术)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

androidstarjack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值