WCDB_Prepush 1.0.7.7

WCDB_Prepush 1.0.7.7

RingoD 维护。



 
依赖
WCDBOptimizedSQLCipher_Prepush~> 1.1.0
SQLiteRepairKit_Prepush~> 1.1.0
 

WCDB_Prepush 1.0.7.7

  • 作者
  • 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 为创建表、索引和约束以及通过 ObjC 对象进行 CRUD 提供了一个灵活、易用的 ORM。

      [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.frameworkCarthage/Build/ 中适当平台目录拖到您的 Xcode 项目的 链接二进制和库 部分的 Build Phases 设置;
    5. 在您的应用程序目标的 Build Phases 设置选项卡中,点击 "+" 图标并选择 新建 Run Script Phase。创建一个包含 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.xcodeproj 拖到 wcdb/apple/ 中的您的项目中;
    3. WCDB.framework 添加到 Xcode 项目的 General settingsEmbeded Binaries 部分的 General settings;**请注意,这里有两组框架,应该选择动态框架。您可以在 Build Phases->Target Dependencies 中查看。正确的是 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.xcodeproj 拖到 wcdb/apple/ 中的您的项目中;
    3. WCDB iOS Static 添加到 Xcode 项目 Build Phases 设置的 Target Dependencies 部分;
    4. WCDB.frameworklibz.tbd 添加到你的 Xcode 项目的 Build Phases 设置中的 Linked Binary and Libraries 部分;注意有两个 WCDB.framework,你应该选择来自 WCDB iOS Static 目标的那一个。
    5. -all_load-ObjC 添加到你的 Xcode 项目的 Build Settings 中的 Other Linker Flags 部分。
    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,请将以下行添加到应用模块的 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],也可以加入我们的腾讯开源计划