×

Retrofit分析-谜之槽点

96
stay4it
2016.04.01 10:26* 字数 420

没耐心自己分析源码的同学,还可以参考Stay录制的视频版
Retrofit分析-漂亮的解耦套路(视频版)

fed9585fb01c944685b113aee6a69b48.jpg

情况是这样的,昨天手贱翻了下retrofit源码,其中有个类叫Platform。除了描述它是个动态代理之外,更有趣是它的初始化方式。看图:

Screen Shot 2016-03-31 at 6.13.47 PM.png

findPlatform() 先找Android,没Android找Java,连Java都没有它居然投靠iOS去了。响当当的retrofit居然会是这种人!

慢着。org.robovm.apple.foundation.NSObject。这是什么鬼。这import肯定不对嘛。

Screen Shot 2016-03-31 at 6.12.18 PM.png

那google下吧,robovm.com。妈蛋,还真有这么回事。Robovm可以编译java代码并有iOS一整套的转化代码来桥接。这样就能用java开发iOS啦。

类似这样的桥接生成native代码的见过不少,相当于一个中间件。lua可以,js可以,flex可以。但我还没遇过像Robovm这样直接用java转iOS的。这太有趣了。

感兴趣的可以去瞧瞧github:https://github.com/robovm/robovm

but,仅仅是转成OC,并不是swift,而且被收购之后也不开源了。价格还不菲。

Screen Shot 2016-03-31 at 6.11.52 PM.png

那么问题来了~为什么retrofit会把这样一段商业代码放在开源库里?难道之前赞助过Robovm?

是不是square的java员工太多啦?你看okhttp,retrofit都是java+android,iOS库就没多少。正好用robovm来转一下?

这都是谜。好了。宝宝不想往下扒了。继续看源码去。

Android那些事
Web note ad 1