close
当前位置: 物联网在线 > 技术文库 > ios >

WCDB:微信开源的高效、完整、易用的移动数据库框架

WCDB是一个高效、完整、易用的移动数据库框架,基于 SQLCipher ,支持iOS, macOS和Android

WCDB for iOS/macOS 基本功能

WINQ (WCDB语言集成查询): 通过WINQ,开发者无须为了拼接SQL的字符串而写一大坨胶水代码。

ORM (Object Relational Mapping): WCDB支持灵活、易用的ORM。开发者可以很便捷地定义表、索引、约束,并进行增删改查操作。

多线程高并发 : WCDB支持多线程读与读、读与写并发执行,写与写串行执行。

加密 :WCDB提供基于 SQLCipher 的数据库加密。

损坏修复 : WCDB内建了Repair Kit用于修复损坏的数据库。

反注入 : WCDB内建了对SQL注入的保护。

...

入门 基本要求

WCDB支持iOS 7、macOS 10.9以上。

WCDB需使用Xcode 8.0以上版本进行编译。

需使用Objective-C++。

安装

通过Carthage安装

先安装 ;

在Cartfile中添加 github "Tencent/WCDB" ,并执行 carthage update ;

将  Carthage/Build/ 目录下iOS或Mac的  WCDB.framework  添加到你的项目工程配置的 Build Phases -> Linked Binary and Libraries 中。

点击你的项目工程配置的 Build Phases 中的 + 选项,在弹出菜单中选择 New Run Script Phase 。在创建的脚本中添加 carthage copy-frameworks ,并在 Input Files 中添加对应平台的路径 $(SRCROOT)/Carthage/Build/iOS/WCDB.framework 或 $(SRCROOT)/Carthage/Build/Mac/WCDB.framework 。

在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。

通过cocoapods安装

先安装 Cocoapods ;

通过 pod repo update 更新WCDB的cocoapods版本。

在Podfile对应的target中,添加 pod 'WCDB ,并执行 pod install 。

在项目中使用CocoaPods生成的 .xcworkspace 运行工程。

在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。

通过动态库安装 : 动态库与iOS 7不兼容,因此需支持iOS 7的需要通过静态库安装。

获取源码。如果是通过git clone,需指定recursive参数: git submodule update --init --recursive 。

将 WCDB.xcodeproj 添加到你的工程中.

在你的项目工程配置的 Build Phases -> Target Dependencies 和 Build Phases -> Linked Binary and Libraries 中添加 WCDB.framework 。

在你的项目工程配置的 General -> Enbedded Binaries 中添加 WCDB.framework 。

在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。

通过静态库安装:

获取源码。如果是通过git clone,需指定recursive参数: git submodule update --init --recursive 。

将 WCDB.xcodeproj 添加到你的工程中.

在你的项目工程配置的 Build Phases -> Target Dependencies 中添加 WCDB iOS Static.framework 。

在你的项目工程配置的 Build Phases -> Linked Binary and Libraries 中添加 WCDB.framework 和 libz.tbd 。 注意,这里有两个 WCDB.framework ,需要添加 WCDB iOS Static 的 target 下的 WCDB.framework 。

在你的项目工程配置的 Build Settings -> Other Linker Flags 中添加 -all_load 和 -ObjC 。

在你的代码文件头引入头文件 #import <WCDB/WCDB.h> 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀 .m 改为 .mm 。

使用教程

使用教程请参考 这里

相关文档

文档请参考 wiki .

接口请参考 API reference

WCDB for Android 基本功能

基于 SQLCipher 的数据库加密

使用连接池实现并发读写

内建 Repair Kit 可用于修复损坏数据库

针对占用空间大小优化的数据库备份/恢复功能

日志输出重定向以及性能跟踪接口

内建用于全文搜索的 mmicu FTS3/4 分词器

入门 接入与迁移

WCDB for Android 可通过 Maven 或 AAR 包引用,API 接口与 Android SDK 非常相近, 所以将已有的 App 迁移到 WCDB 是相当容易的。

详细请参看 Android 接入与迁移 与 sample-encryptdb 示例。

数据库修复

WCDB 可以使用 Repair Kit 或备份恢复来修复损坏的数据库,请参看 Android 数据库修复 与 sample-repairdb 示例。

从源码编译 编译 WCDB

你可以使用预编译的依赖库(OpenSSL crypto 和 SQLCipher)来编译 WCDB for Android, 使用 Gradle 或 Android Studio 皆可。

cd android ./gradlew build

Android Studio 请导入 android 目录作为 Root Project。

编译 WCDB 需要安装 Android NDK r11c 或以上,并在 android/local.properties 上配置好 SDK 与 NDK 路径。Android Studio 一般会帮你配置好。

编译依赖项
(责任编辑:ioter)

用户喜欢...

Semtech利用LoRaWAN推出用于物联网开发的免费开源工具集

Semtech希望通过免费的,开源的,以LoRaWAN为重点的物联网开发教育工具来揭开RF的神秘色彩。 Semtech宣布推出两个新的免费教育工具系列,以帮助设计人员了解LoRaWAN以及如何在设计中实现它,尤...


AI 圣经 PRML《模式识别与机器学习》官方开源了!

红色石头相信任何一个搞机器学习、深度学习的人都应该听说过一本经典教材:《Pattern Recognition and Machine Learning》,中文译名《模式识别与机器学习》,简称 PRML。出自微软剑桥研究院实验室...


开源物联网平台汇总

物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术。 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目。 物联网平台是帮助设置和管理互联网...


Startup将开源驱动到物联网

由Linaro成员组成的创业公司希望成为物联网的红帽,为终端节点,网关和汽车提供Linux和Zephyr RTOS的配置。Foundries.io旨在提供与处理器无关的代码,以便在物联网开发人员具有各种越来越多的特...


CN0398开发板和ADuCM360_demo_cn0398开源软件包解决了土壤测量系统设

保持适当的土壤湿度和pH值是植物健康的基本要求,无论是用于大规模农业还是简单的家庭菜园。然而,为了测量这些土壤特性,开发人员需要设计出具有成本效益的高精度模拟信号链,能够将...


创新的组合:开源和众筹

开源已经被称为力量倍增器,这是使公司的员工,融资和资源更为有效的一个因素。但是,在过去的几年里,开源已经开始与另一个力量倍增器 - 众筹相提并论。现在,这种结合的结果正在出...


推荐 10 个饱受好评且功能独特的开源人工智能项目

关于人工智能的项目,相信大家都看过或者用过不少了,但它们的大多数看上去都十分“高大上”,让人感觉要掌握他们犹如习屠龙之术一样。事实上,有很多关于人工智能的项目还是十分实...


“开源”为何对于IoT如此重要?

物联网、开源、操作系统是目前IT业界的热门词汇,也正是这三个词汇构成了物联网开源操作系统。 对于物联网发展而言,“碎片化”是主要的问题,其中芯片、传感器、通信协议、应用场景...


【活动】《MicroPython入门指南》正式出版了,进微信群一起交流!

第一本专门介绍MicroPython的中文图书《MicroPython入门指南》由电子工业出版社正式出版了。 《MicroPython入门指南》 作者:邵子扬 MicroPython是近年开源社区中最热门的项目之一,它功能强大,使...


基于Zedboard的开源软件定义无线电(SDR)设备:Panoradio!

软件定义无线电(Software Defined Radio, SDR)是一种现代无线电广播通信技术,它采用软件定义的无线通信协议而非“纯硬件电路”实现各种通信和信号采集功能,这种方式打破了有史以来设备...