Socket-Buffer

pod 'ProtocolBuffers-Swift'
pod 'SwiftProtobuf'

demo地址

ProtocolBuffers太闹心安装很久不行而且最新版本4.0.6pod安装运行报错且2年不更新
终于找到一个救星级别库了 是优化了 ProtocolBuffers的SwiftProtobuf这个库还在更新
下面就SwiftProtobuf展开学习

重点说在前面,为了简单 我的服务端和客户端都是iphone模拟器 不是macos哦 具体可以看我demo

GitHub地址:SwiftProtobuf

简介

安全性:protobuf代码生成系统避免了手工构建序列化代码常见的错误。
正确性:SwiftProtobuf通过了自己广泛的测试套件和Google对protobuf正确性的完全一致性测试。
模式驱动:在一个单独的.proto模式文件中定义数据结构可以清楚地记录通信约定。
惯用法:SwiftProtobuf充分利用了Swift语言。特别是,所有生成的类型都提供完整的Swift写值复制语义。
高效的二进制序列化:.serializedData()方法返回一个具有紧凑二进制格式的数据。可以使用init(serializedData:)初始值设定项反序列化数据。
标准JSON序列化:.jsonUTF8Data()方法返回可以用init(jsonUTF8Data:)初始值设定项解析的数据的JSON格式。
Hashable,Equatable:生成的结构可以放入集合或字典中。
Performant:二进制和JSON序列化程序已经过广泛的优化。
可扩展:您可以将自己的Swift扩展添加到任何生成的类型中。

最好的是,可以使用相同的.PROTO文件并生成java、C++、Python或Objtovi-C,以供其他平台使用。为这些语言生成的代码将使用与SwiftProtobuf完全相同的序列化和反序列化约定,从而可以轻松地以二进制或JSON形式交换序列化数据,而无需您付出额外的努力。

入门(Getting Started)

如果您以前使用过协议缓冲区,那么添加Swift支持非常简单:您只需要构建protoc-gen-swift程序并将其复制到您的路径中。protoc程序会自动找到并使用它,允许你为你的proto文件建立快速的源代码。当然,您还需要将SwiftProtobuf运行时库添加到项目中,如下所述。

系统要求

  • Swift4.2和Xcode10以上 我这边是Xcode Version 12.0.1 (12A7300),Swift5.3

构建和安装代码生成器插件 (不推荐)

To translate .proto files into Swift, you will need both Google's protoc compiler and the SwiftProtobuf code generator plugin.
1.到一个特地准备的文件夹地址 克隆项目 或者 下载都行
切换到桌面克隆

git clone https://github.com/apple/swift-protobuf.git
image.png

2.这步骤不咋看懂 不过不影响

Pick what released version of SwiftProtobuf you are going to use. You can get a list of tags with:
选择要使用的SwiftProtobuf的发布版本。您可以通过以下方式获得标签列表:
git tag -l
Once you pick the version you will use, set your local state to match, and build the protoc plugin:
选择要使用的版本后,将本地状态设置为匹配,然后构建protoc插件:
git checkout tags/[tag_name]
swift build -c release

This will create a binary called protoc-gen-swift in the .build/release directory.
To install, just copy this one executable into a directory that is part of your PATH environment variable.
NOTE: The Swift runtime support is now included with macOS. If you are using old Xcode versions or are on older system versions, you might need to use also use --static-swift-stdlib with swift build.
这将在.build/release目录中创建一个名为protoc gen swift的二进制文件。
要安装,只需将这个可执行文件复制到PATH环境变量的一个目录中。
注意:Swift运行时支持现在包含在macOS中。如果您使用的是旧的Xcode版本或是旧的系统版本,那么您可能还需要使用--static swift stdlib with swift build。

我这边不知道怎执行所有就执行最后一步swift build -c release

image.png


其实上面操作我也不知道是干啥的 确实生成了 protoc-gen-swift
不止生成之后能做什么 不管了 继续看文档 这步也可以跳过


通过homebrew(推荐)

Alternatively install via Homebrew 或者通过homebrew安装
via:通过
Alternatively:或者
上面不好操作 可以通过这步来操作哦

  • 如果没有安装homebrew 先安装homebrew 可以参考我的另一篇文章homebrew安装2021版
  • 安装swift-protobuf
    打开终端直接执行
brew install swift-protobuf
安装过程.png

安装好的路径是固定的

/usr/local/Cellar/swift-protobuf/
安装路径.png

image.png

安装结束后 可以生成.pb.swift 同理也可以生成OC、Java等
通过克隆下载编译或者homebrew方式安装 任意一种方式生成protoc-gen-swift文件 都OK
通过克隆下载编译或者homebrew方式安装 任意一种方式生成protoc-gen-swift文件 都OK
通过克隆下载编译或者homebrew方式安装 任意一种方式生成protoc-gen-swift文件 都OK
接下来都可以利用命令行讲proto 生成swift 或者其他文件如果Java

将.proto文件转换为Swift

这里暂时不考虑proto文件怎么写 后续会开一篇来讲 可以参考其他大佬的
这是一份很有诚意的 Protocol Buffer 语法详解
快来看看Google出品的Protocol Buffer,别只会用Json和XML了
Android:手把手带你源码分析 Protocol Buffer

protoc --swift_out=. my.proto

例子 桌面建立一个空文件夹 把proto文件复制进来 然后cd 进去

cd /Users/mac/Desktop/ByProtoCreateSwift
到这个文件夹中

执行下面命令即可生成想要的东西啦

protoc --swift_out=. IMMessage.proto
生成swift.png
protoc --java_out=. IMMessage.proto
protoc --objc_out=. IMMessage.proto
image.png

将SwiftProtobuf库添加到项目中

建议:SwiftProtobuf版本和生成代码的protoc gen swift版本保持一致

快速构建(不推荐 步骤不知道咋搞)

After copying the .pb.swift files into your project, you will need to add the SwiftProtobuf library to your project to support the generated code. If you are using the Swift Package Manager, add a dependency to yourPackage.swift file and import the SwiftProtobuf library into the desired targets. Adjust the "1.6.0" here to match the [tag_name] you used to build the plugin above:

dependencies: [
    .package(name: "SwiftProtobuf", url: "https://github.com/apple/swift-protobuf.git", from: "1.6.0"),
],
targets: [
    .target(name: "MyTarget", dependencies: ["SwiftProtobuf"]),
]

...using Xcode

If you are using Xcode, then you should:

  • Add the .pb.swift source files generated from your protos directly to your project
  • Add the appropriate SwiftProtobuf_ target from the Xcode project in this package to your project.

CocoaPods(推荐)

pod 'SwiftProtobuf'

整合运行编译

  • 将.proto 和 .pb.swift 拖入项目
  • 将库导入项目中(CocoaPods)
  • command+B 编译成功即可

使用

demo地址

你可能感兴趣的:(Socket-Buffer)