WCDB:微信开源的高效、完整、易用的移动数据库框架
TerHobler
7年前
<p>WCDB是一个高效、完整、易用的移动数据库框架,基于 <a href="/misc/goto?guid=4958968184147660461" rel="nofollow,noindex">SQLCipher</a> ,支持iOS, macOS和Android。</p> <h2>WCDB for iOS/macOS</h2> <h2>基本功能</h2> <ul> <li><strong>WINQ</strong> (WCDB语言集成查询): 通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶水代码。</li> <li><strong>ORM</strong> (Object Relational Mapping): WCDB支持灵活、易用的ORM。开发者可以很便捷地定义表、索引、约束,并进行增删改查操作。</li> <li><strong>多线程高并发</strong> : WCDB支持多线程读与读、读与写并发执行,写与写串行执行。</li> <li><strong>加密</strong> :WCDB提供基于 <a href="/misc/goto?guid=4958968184147660461" rel="nofollow,noindex">SQLCipher</a> 的数据库加密。</li> <li><strong>损坏修复</strong> : WCDB内建了Repair Kit用于修复损坏的数据库。</li> <li><strong>反注入</strong> : WCDB内建了对SQL注入的保护。</li> <li>...</li> </ul> <h2>入门</h2> <h3>基本要求</h3> <ul> <li>WCDB支持iOS 7、macOS 10.9以上。</li> <li>WCDB需使用Xcode 8.0以上版本进行编译。</li> <li>需使用Objective-C++。</li> </ul> <h3>安装</h3> <ul> <li><strong>通过Carthage安装</strong> : <ol> <li>先安装 <a href="/misc/goto?guid=4959750111273467746" rel="nofollow,noindex">Carthage</a> ;</li> <li>在Cartfile中添加 github "Tencent/WCDB" ,并执行 carthage update ;</li> <li>将 Carthage/Build/ 目录下iOS或Mac的 WCDB.framework 添加到你的项目工程配置的 Build Phases -> Linked Binary and Libraries 中。</li> <li>点击你的项目工程配置的 Build Phases 中的 + 选项,在弹出菜单中选择 New Run Script Phase 。在创建的脚本中添加 carthage copy-frameworks ,并在 Input Files 中添加对应平台的路径 $(SRCROOT)/Carthage/Build/iOS/WCDB.framework 或 $(SRCROOT)/Carthage/Build/Mac/WCDB.framework 。</li> <li>在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。</li> <li>由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。</li> </ol> </li> <li><strong>通过cocoapods安装</strong> : <ol> <li>先安装 <a href="/misc/goto?guid=4958993381732790925" rel="nofollow,noindex">Cocoapods</a> ;</li> <li>通过 pod repo update 更新WCDB的cocoapods版本。</li> <li>在Podfile对应的target中,添加 pod 'WCDB ,并执行 pod install 。</li> <li>在项目中使用CocoaPods生成的 .xcworkspace 运行工程。</li> <li>在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。</li> <li>由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。</li> </ol> </li> <li><strong>通过动态库安装</strong> : 动态库与iOS 7不兼容,因此需支持iOS 7的需要通过静态库安装。 <ol> <li>获取源码。如果是通过git clone,需指定recursive参数: git submodule update --init --recursive 。</li> <li>将 WCDB.xcodeproj 添加到你的工程中.</li> <li>在你的项目工程配置的 Build Phases -> Target Dependencies 和 Build Phases -> Linked Binary and Libraries 中添加 WCDB.framework 。</li> <li>在你的项目工程配置的 General -> Enbedded Binaries 中添加 WCDB.framework 。</li> <li>在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。</li> <li>由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。</li> </ol> </li> <li><strong>通过静态库安装:</strong> <ol> <li>获取源码。如果是通过git clone,需指定recursive参数: git submodule update --init --recursive 。</li> <li>将 WCDB.xcodeproj 添加到你的工程中.</li> <li>在你的项目工程配置的 Build Phases -> Target Dependencies 中添加 WCDB iOS Static.framework 。</li> <li>在你的项目工程配置的 Build Phases -> Linked Binary and Libraries 中添加 WCDB.framework 和 libz.tbd 。 注意,这里有两个 WCDB.framework ,需要添加 WCDB iOS Static 的 target 下的 WCDB.framework 。</li> <li>在你的项目工程配置的 Build Settings -> Other Linker Flags 中添加 -all_load 和 -ObjC 。</li> <li>在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。</li> <li>由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。</li> </ol> </li> </ul> <h3>使用教程</h3> <p>使用教程请参考 <a href="/misc/goto?guid=4959750111392756177" rel="nofollow,noindex">这里</a></p> <h3>相关文档</h3> <ul> <li>文档请参考 <a href="/misc/goto?guid=4959750111478637605" rel="nofollow,noindex">wiki</a> .</li> <li>接口请参考 <a href="/misc/goto?guid=4959750111559019509" rel="nofollow,noindex">API reference</a></li> </ul> <h2>WCDB for Android</h2> <h2>基本功能</h2> <ul> <li>基于 <a href="/misc/goto?guid=4958968184147660461" rel="nofollow,noindex">SQLCipher</a> 的数据库加密</li> <li>使用连接池实现并发读写</li> <li>内建 Repair Kit 可用于修复损坏数据库</li> <li>针对占用空间大小优化的数据库备份/恢复功能</li> <li>日志输出重定向以及性能跟踪接口</li> <li>内建用于全文搜索的 mmicu FTS3/4 分词器</li> </ul> <h2>入门</h2> <h3>接入与迁移</h3> <p>WCDB for Android 可通过 Maven 或 AAR 包引用,API 接口与 Android SDK 非常相近, 所以将已有的 App 迁移到 WCDB 是相当容易的。</p> <p>详细请参看 <a href="/misc/goto?guid=4959750111651964191" rel="nofollow,noindex">Android 接入与迁移</a> 与 sample-encryptdb 示例。</p> <h3>数据库修复</h3> <p>WCDB 可以使用 Repair Kit 或备份恢复来修复损坏的数据库,请参看 <a href="/misc/goto?guid=4959750111732681115" rel="nofollow,noindex">Android 数据库修复</a> 与 sample-repairdb 示例。</p> <h2>从源码编译</h2> <h3>编译 WCDB</h3> <p>你可以使用预编译的依赖库(OpenSSL crypto 和 SQLCipher)来编译 WCDB for Android, 使用 Gradle 或 Android Studio 皆可。</p> <pre> cd android ./gradlew build</pre> <p>Android Studio 请导入 android 目录作为 Root Project。</p> <p>编译 WCDB 需要安装 Android NDK r11c 或以上,并在 android/local.properties 上配置好 SDK 与 NDK 路径。Android Studio 一般会帮你配置好。</p> <h3>编译依赖项</h3> <p>如果你需要自己编译 OpenSSL 等依赖项,你需要一个 Bash 环境(Windows 可以安装 Cygwin 或 MSys)、target 为本机的 C 编译器(如 GCC)、Perl 5 以及 Tcl。之后执行下面命令即可编译依赖项。</p> <pre> export ANDROID_NDK_ROOT='/path/to/ndk' ./build-depends-android.sh</pre> <p>编译依赖项不是必要的,你完全可以使用预先编译好的库。</p> <h2>文档</h2> <p>API 文档请参看 <a href="/misc/goto?guid=4959750111814521112" rel="nofollow,noindex">这里</a> (英文)。</p> <p> </p> <p>项目主页:<a href="http://www.open-open.com/lib/view/home/1498475646082">http://www.open-open.com/lib/view/home/1498475646082</a></p> <p> </p>