--- Bidirectional Stream start ---
HELLO
KOTLIN
PROTO
--- Bidirectional Stream finish ---
--- Client Stream start ---
HELLO
KOTLIN
PROTO
--- Client Stream finish ---
--- Server Stream start ---
KPROTO
KPROTO
--- Server Stream finish ---
Kroto+(Kroto-plus)Kroto+是一个面向Kotlin的gRPC库https://github.com/marcoferrer/kroto-plus以往,想在Kotlin上使用protobuf协议进行grpc通信,需要基于java生成本地stub代码然后在kotlin中调用,现在通过Kroto+可以直接生成更加kotlin范儿的本地stub,包括对Coroutine的支持、支持DSL等,非常方便!// beforeval message1 = MessageRequest.n.
gRPC Kotlin是一个插件,用于使用服务的生成本地Kotlin绑定。
gRPC中双向流式rpc调用的异步特性使它们难以实现和读取。 StreamObserver<T>让您绕开StreamObserver<T>可能有些棘手。 特别是方法参数是响应观察者,而返回值是请求观察者,这一切都与处理程序的普通旧同步版本的外观有些倒退。
如果您想在一个呼叫中协调多个请求和响应消息,则将不得不管理一些棘手的状态以及观察者之间的同步。 gRPC有,这使此操作更加容易。 但是我认为我们可以做得更好!
输入Kotlin协程! 通过
用kotlin写了个小玩意,数据打算用protobuf存储,结果各种Unresolved reference: proto,折腾半天终于搞定。
根目录下build.gradle:
buildscript {
ext.kotlin_version = '1.2.71'
ext.grpc_version = '1.15.1'
repositories {
ma...
序列化探索之Protobuf
Protobuf是谷歌提出的一种高压缩比的序列化格式,二进制,不可读,语言无关,平台无关。拥有自己的语法规则,压缩编码算法,并提供主流语言的API生成器(即Protobuf编译器),其序列化结果很小,能够有效节省带宽。
掌握Protobuf,需要比较了解三个方面,其中,如果只是单纯滴使用,前两个方面即可。
proto语法规则,即proto文件的语法规则
具体语言的API生成及使用规则,即通过proto文件生成对应语言的代码
序列化和反序列化算法
截止目前,proto有
下面的题目都是在Android交流群大家在面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖。
参考解析:郭霖、鸿洋、玉刚、极客时间、腾讯课堂…
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关
、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!
android studio Kotlin中使用 GRPC和protobuf 出现一些问题总结
Kotlin中配置 GRPC和protobuf 出现一些问题总结如下:
3rd-party Gradle plug-ins may be the cause
Codegen plugin grpc not defined
Execution failed for task ‘:app:gener...
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.28.0</version>
在之前分享过一篇 Jetpack 综合实战应用 神奇宝贝(PokemonGo) 眼前一亮的 Jetpack + MVVM 极简实战 ,这个项目主要包了以下功能:
自定义 RemoteMediator 实现 network + db 的混合使用 ( RemoteMediator 是 Paging3 当中重要成员 )
使用 Data Mapper 分离数据源 和 UI
Kotlin Flow 结合 Retrofit2 + Room 的混合使用
Kotlin Flow 与 LiveData 的使用
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ArticleViewHolder {
return ArticleViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.list_item,parent,false))
class ArticleVi
grpc-kotlin测试
测试:用kotlin编写的简单grpc服务器/客户端,protobuf生成的java文件,gradle multiproject,IDEA CE
为gRPC-Test项目启动gradle任务“ build”,以生成与protobuf相关的Java代码等。
使用Gradle任务“运行”启动服务器项目的服务器
使用Gradle任务“运行”为客户端项目启动客户端
grpc-kotlin-hello
Protobuf,类似于json和xml,是一种序列化结构数据机制,可以用于数据通讯等场景,相对于xml而言更小,相对于json而言解析更快,支持多语言。Protobuf使用 文件来定义数据格式,所以我们首先新建立一个文件,并在文件中填下如下内容:
这样我们就定义好了一个基本的Person对象,下面我们对文件中的关键字进行一一说明:syntax:指定proto的版本,protobuf目前有proto2和proto3两个常用版本,如果没有声明,则默认是proto2.package:指定包名。import:导
在 Kotlin 的构建过程中,出现 NoClassDefFoundError: org/gradle/api/services/BuildService 错误的原因可能是在编译时缺少了 Gradle 插件或相关的依赖库。
具体的解决方案可能需要根据您的项目结构和构建设置来确定。这里列出一些可能有帮助的建议:
- 确保在项目的 build.gradle 文件中正确地引用了 Kotlin Gradle 插件,例如:
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.4.20'
- 确保在项目的 build.gradle 文件中正确地声明了所需的依赖库,例如:
dependencies {
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.20'
- 如果您正在使用 Android Studio,请确保在您的 app 模块的 build.gradle 文件中引用了 Android 插件,例如:
apply plugin: 'com.android.application'
- 在项目中使用了其他的 Gradle 插件,请确保这些插件也正确地配置并引用了相关的依赖库。
如果这些建议都无法解决您遇到的问题,建议您检查项目中其他可能与构建过程有关的配置文件,并查看构建时输出的日志信息以了解更多的细节。