计划创建两个开源项目
Thrift 客户端: https://code.google.com/p/thrift-jclient/
Thrift 接口生成: https://code.google.com/p/thrift-generator/
动机:
公司的Android客户端使用thrift协议与服务端通信,鉴于thrift自动生成的接口jar包加起来已经达到2M,
与日益追求apk小巧化的趋势渐行渐远。特此做了这项调研。历时一周,终于成功将jar包从2M缩减到50k.
(项目开源尚在进行中...)
思路大致是这样的:
1 客户端库:做一个通用client类,将结构体字段统一归为字段类,作为数组定义到client类的字段。
所有与Thrift的通信都通过client类。
2 接口自动生成:生成纯Bean(只含有字段、getter 和setter方法)和接口类,与thrift协议没有任何耦合。
不受自动生成的jar包限制,可以反编译后直接使用接口jar的源码,类和接口可以再重构(比如改包名划分到模块)
如果接口类的方法太多的话,可以按模块拆分,这样也方便单独测试。比如如果想测一个接口方法,可以从源码中抽出一个方法
,单独定义个接口只包含感兴趣的这个方法。