WCDBSQLiteRepairKit 1.2.7

WCDBSQLiteRepairKit 1.2.7

Pircate 维护。



  • sanhuazhang

WCDB

PRs Welcome Release Version WeChat Approved iOS WeChat Approved Android Platform

中文版本请参看这里

WCDB 是一个 高效完整易于使用 的移动数据库框架,用于微信应用中。它目前在 iOS、macOS 和 Android 上可用。

WCDB for iOS/macOS

功能

  • 易于使用。通过 WCDB,您可以通过一行代码从数据库获取对象。

    • WINQ (WCDB 语言集成查询):WINQ 是一种原生数据查询能力,可让开发者摆脱编写连接 SQL 查询字符串的粘合代码。

    • ORM (对象关系映射):WCDB 提供了一个灵活、易于使用的 ORM,用于创建表、索引和约束,以及通过 ObjC 对象进行 CRUD。

      [database getObjectsOfClass:WCTSampleConvenient.class
                        fromTable:tableName
                            where:WCTSampleConvenient.intValue>=10
                            limit:20];
  • 高效。通过框架层和 sqlcipher 源优化,WCDB 具有更好的性能。

    • 多线程并发:WCDB 支持通过连接池进行并发读-读和读-写访问。
    • 批量写入性能测试 更多基准数据,请参阅 我们的基准
  • 完整.

    • 加密支持:WCDB 通过 SQLCipher 支持数据库加密。
    • 损坏恢复:WCDB 提供内置的修复工具,用于数据库损坏恢复。
    • 防注入:WCDB 提供内置的 SQL 注入防护。

入门

先决条件

  • 使用 WCDB 的应用程序可以针对:iOS 7 或更高版本,macOS 10.9 或更高版本。
  • 需要 Xcode 8.0 或更高版本。
  • 需要 Objective-C++。

安装

  • 通过 Cocoapods
    1. 安装 CocoaPods。
    2. 运行 pod repo update 以让 Cocoapods 了解最新的 WCDB 版本。
    3. 在你的 Podfile 中,添加 pod 'WCDB' 到你的应用目标。
    4. 从命令行运行 pod install
    5. 使用 CocoaPods 生成的 .xcworkspace 文件来处理你的项目!
    6. 在你的 Objective-C++ 源文件顶部添加 #import <WCDB/WCDB.h> 并开始你的 WCDB 之旅。
    7. **由于 WCDB 是一个 Objective-C++ 框架,所以对于你的项目中包含 WCDB 的文件,你应该将它们的扩展名 .m 重命名为 .mm
  • 通过 Carthage
    1. 安装 Carthage
    2. github "Tencent/WCDB" 添加到你的 Cartfile;
    3. 运行 carthage update
    4. WCDB.framework 拖动到 Carthage/Build/ 中恰当的平台目录,并将其拖到 Xcode 项目设置的 链接的二进制和库 部分;
    5. 在你的应用目标的 构建阶段 设置标签页中,单击加号图标并选择 新运行脚本阶段。创建一个具有 carthage copy-frameworks 的运行脚本,并将框架的路径添加到 输入文件$(SRCROOT)/Carthage/Build/iOS/WCDB.framework$(SRCROOT)/Carthage/Build/Mac/WCDB.framework
    6. 在你的 Objective-C++ 源文件顶部添加 #import <WCDB/WCDB.h> 并开始你的 WCDB 之旅。
    7. 由于 WCDB 是一个 Objective-C++ 框架,所以对于你的项目中包含 WCDB 的文件,你应该将它们的扩展名 .m 重命名为 .mm
  • 通过动态框架请注意,动态框架与 iOS 7 不兼容。有关 iOS 7 的支持,请参阅“静态框架”。
    1. 从 git 仓库获取源代码并更新 sqlcipher 的子模块。
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update --init sqlcipher
    2. WCDB.xcodeprojwcdb/apple/ 拖放到你的项目中;
    3. WCDB.framework 添加到 Xcode 项目“通用设置”中的 嵌入的二进制文件部分;注意这里有两个框架,应该选择动态框架。您可以在“构建阶段”->“目标依赖”中查看它。正确的选择是 WCDB,而`WCDB iOS Static` 用于静态库。
    4. 在你的 Objective-C++ 源文件顶部添加 #import <WCDB/WCDB.h> 并开始你的 WCDB 之旅。
    5. 由于 WCDB 是一个 Objective-C++ 框架,所以对于你的项目中包含 WCDB 的文件,你应该将它们的扩展名 .m 重命名为 .mm
  • 通过静态框架
    1. 从 git 仓库获取源代码并更新 sqlcipher 的子模块。
      • git clone https://github.com/Tencent/wcdb.git
      • cd wcdb
      • git submodule update --init sqlcipher
    2. WCDB.xcodeprojwcdb/apple/ 拖放到你的项目中;
    3. WCDB iOS Static 添加到 Xcode 项目“构建阶段”设置的 目标依赖部分;
    4. WCDB.frameworklibz.tbd 添加到 Xcode 项目“构建阶段”设置的 链接的二进制和库部分;注意这里有多个 WCDB.framework,您应该选择来自 WCDB iOS Static 目标的那个。
    5. -all_load-ObjC 添加到 Xcode 项目“构建设置”的 其他链接器标志部分。
    6. 在你的 Objective-C++ 源文件顶部添加 #import <WCDB/WCDB.h> 并开始你的 WCDB 之旅。
    7. 由于 WCDB 是一个 Objective-C++ 框架,所以对于你的项目中包含 WCDB 的文件,你应该将它们的扩展名 .m 重命名为 .mm

教程

教程可以在 这里找到。

文档

WCDB for Android

功能

  • 通过 SQLCipher 进行数据库加密。
  • 通过现代 Android 框架的连接池实现并发访问。
  • 数据库损坏恢复工具。
  • 针对小型备份大小的数据库备份和恢复实用程序。
  • 日志重定向和各种跟踪设施。
  • 支持 API 12(Android 3.1)及以上版本。

入门

要将WCDB添加到您的项目,可以选择以下任一方式:通过Maven导入或通过AAR包导入。

通过Maven导入

要通过Maven仓库导入WCDB,请在您的app模块的build.gradle中添加以下几行。

dependencies {
    compile 'com.tencent.wcdb:wcdb-android:1.0.5'
    // Replace "1.0.2" to any available version.
}

这会导致Gradle在构建应用程序时从jcenter下载AAR包。

导入预构建的AAR包

  1. 从发布页面下载AAR包。   2. 将AAR作为新模块导入。 在Android Studio中,选择文件 -> 新建 -> 新模块...菜单,并选择"导入JAR/AAR包"。   3. 在新的模块上添加依赖。 这可以通过Android Studio中的文件 -> 项目结构...完成,或者通过将以下代码添加到应用的build.gradle中来实现。

dependencies {
    // Change "wcdb" to the actual module name specified in step 2.
    compile project(':wcdb')
}

从纯文本文档的SQLite数据库迁移

WCDB提供了与Android SQLite数据库API非常相似的接口。为了从AOSP API迁移您的应用程序,更改导入路径从android.database.*com.tencent.wcdb.*,并将android.database.sqlite.*更改为com.tencent.wcdb.database.*。更新导入路径后,您的应用程序将链接到WCDB而不是AOSP API。

要打开或创建一个加密数据库,请使用带有-password版本的方法SQLiteDatabase.openOrCreateDatabase()SQLiteOpenHelper.getWritableDatabase()Context.openOrCreateDatabase()

注意:在SQLCipher Android绑定中,WCDB使用byte[]而不是String作为密码。

String password = "MyPassword";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/path/to/database", password.getBytes(), 
        null, null);

有关在纯文本文档的数据库和加密数据库之间传输数据的示例,请参阅sample-encryptdb

损坏恢复

请参阅sample-repairdb获取使用RepairKit恢复损坏数据库的说明。

重定向日志输出

默认情况下,WCDB 将其日志消息打印到系统日志cat。您可能需要更改此行为,例如,保留日志以用于故障排除。WCDB 可以通过使用 Log.setLogger(LogCallback) 方法将其所有日志输出重定向到用户定义的例程。

从源构建

使用预构建依赖项构建 WCDB Android

WCDB 本身可以与依赖项分离构建,使用 Gradle 或 Android Studio。要构建 WCDB Android 库,在 android 目录中运行 Gradle。

$ cd android
$ ./gradlew build

构建 WCDB 需要 Android NDK。如果 Gradle 无法找到您的 SDK 和/或 NDK,您可能需要在 android 目录中创建一个名为 local.properties 的文件,其内容如下:

sdk.dir=path/to/sdk
ndk.dir=path/to/ndk

在将项目导入后,Android Studio 将为您完成此操作。

从源构建依赖项

WCDB 依赖于 OpenSSL 加密库和 SQLCipher。如果您愿意,您可以重新构建所有依赖项。在这种情况下,需要在系统上安装支持 C 编译器、Perl 5、Tcl 和 bash 环境的宿主机。

要构建依赖项,检出所有子模块,设置环境变量 ANDROID_NDK_ROOT 为您的 NDK 路径,然后运行 build-depends-android.sh

$ export ANDROID_NDK_ROOT=/path/to/ndk
$ ./build-depends-android.sh

这将构建 OpenSSL 加密库,生成 SQLCipher 混合源,并将它们放置到适合 WCDB 库构建的适当位置。

文档

贡献

如果您有兴趣参与贡献,请查看[CONTRIBUTING.md],并加入我们的腾讯开源计划