A Converter Factory for Protocol Buffer javanano
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea
app
converterlibrary
gradle/wrapper
.gitignore
README.md
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

ProtoNanoConverterFactory

A Converter Factory for Protocol Buffer javanano

Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data.

Protocol Buffer (又名,protobuf)是 Google 提供的一种语言中立,平台中立,可扩展的序列化/结构化数据的机制。

JavaNano is a special code generator and runtime library designed specially for resource-restricted systems, like Android. It is very resource-friendly in both the amount of code and the runtime overhead.

JavaNano是专门为资源受限系统(如Android)设计的特殊代码生成器和运行时库。 代码量和运行时开销都非常资源友好。

工作中接手的项目中,使用了Protocol Buffer javanano。查看编译生成的java类,会发现,javanano相比普通版本做了很大程度上的阉割,去掉了getter/setter方法、builder模式、Parser解析器。javanano直接解析并没有啥问题,而且很简单方便,但是,对于习惯了使用RxJava+Retrofit的我,使用工厂统一解析肯定是个硬性需求。所以问题来了,普通版本的转换工厂(com.squareup.retrofit2:converter-protobuf:2.3.0)是使用反射获取的Parser实例进行解析,javanano就使用不了,所以就有了这个自定义转换工厂。

使用简介

添加依赖

  • Maven
<dependency>
  <groupId>com.sunnyxibei</groupId>
  <artifactId>converter-protobuf-javanano</artifactId>
  <version>1.0.1</version>
  <type>pom</type>
</dependency>
  • gradle
compile 'com.sunnyxibei:converter-protobuf-javanano:1.0.1'
  • 代码中使用和所有工厂类的使用一样简单
 Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(client.build())
                .addConverterFactory(ProtoNanoConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();