WCDB.swift.prepush 1.0.7.5

WCDB.swift.prepush 1.0.7.5

RingoD维护。



 
依赖
WCDBOptimizedSQLCipher~> 1.2.0
SQLiteRepairKit~> 1.2.0
 

  • 作者
  • 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,用于创建表、索引和约束,并通过 Objective-C 对象进行 CRUD 操作。

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

    • 多线程并发:WCDB 支持通过连接池进行并发读-读和读-写访问。
    • 批量写入性能测试。请参考以下图表以获取更多基准数据:[批量写入基准测试](https://raw.githubusercontent.com/wiki/Tencent/wcdb/assets/benchmark/baseline_batch_write.png)。
  • 完整.

    • 加密支持: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中,为您的应用target添加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.frameworkCarthage/Build/ 中适当平台目录拖拽到您的Xcode项目的 构建阶段 设置中的 链接的二进制和库 部分;
    5. 在您应用程序targets的 构建阶段 设置选项卡上,点击 "+" 图标,选择 新建运行脚本阶段。创建一个运行脚本 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**。

教程

教程可以在这里找到:教程链接

文档

对于 Android 的 WCDB

特性

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

入门

要将WCDB引入到您的项目中,请选择以下两种方式之一:通过Maven导入或通过AAR包导入。

通过Maven导入

要使用Maven仓库导入WCDB,请将以下行添加到您应用模块中的 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 Database APIs非常类似的接口。要将应用程序从AOSP API迁移,更改为从 android.database.*com.tencent.wcdb.*,并将 android.database.sqlite.* 更改为 com.tencent.wcdb.database.*。更新导入路径后,应用程序将链接到WCDB而非AOSP API。

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

注意:WCDB在SQLCipher Android绑定中用 byte[] 代替 String 作为密码。

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

请参阅 sample-encryptdb 样例,该样例展示了在纯文本和加密数据库之间传输数据的示例。

损坏恢复

请参阅 sample-repairdb,了解如何使用 RepairKit 恢复损坏的数据库的说明。

重定向日志输出

默认情况下,WCDB 将其日志信息打印到系统日志中。您可能希望更改此行为,例如,为了保存日志以便进行故障排除。可以通过 Log.setLogger(LogCallback) 方法将WCDB的所有日志输出重定向到用户定义的例程。

从源码构建

使用预构建依赖关系构建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。如果您希望重新构建所有依赖项,可以将主机系统的编译器、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 库构建。

文档

  • 文档可以在我们的 Wiki 上找到:Wiki 链接
  • 这里可以找到Android的API参考

参与贡献

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