Android工程师角度分析App使用的开源框架-1.支付宝

年前在掘金上看到一篇文章支付宝 Android 版使用的开源组件,看到很多人在评论,怎么支付宝也用这么多的开源框架,是不是会很low啊?
接下来,我们看看支付宝用到的开源框架列表:https://ds.alipay.com/fd-opensource/index.html 。 这篇文章已经分析了支付宝用到的开源组件以及一些说明。不过我这次要从源码角度(反编译)再去看看,支付宝到底用了哪些开源框架。

反编译源码

关于反编译的工具,可以看我以前的一篇文章Android反编译之一-反编译的工具和方法
这次使用到的工具

  • 工具:enjarify和JD GUI(http://jd.benow.ca/) , 因为我这次只关注源码
  • 支付宝版本:com.eg.android.AlipayGphone_10.0.1.123166_105.apk

反编译完成后,使用JD查看源码,源码结构:

源码分析

下面就源码来分析下,支付宝使用的开源框架,是否和他们列出来的一致。

名称 包名 描述
android-supprt-library v4,v7,v13,multidex google支持库
OpenSSL NDK使用,看下lib是否有对应的so文件
Gson com.google.gson Google官方的Json解析库
fastjson com.alibaba.fastjson alibaba的Json解析库
sqlcrypto net.sqlcipher sqlite加密库,支付宝直接整合到com.alibaba.sqlcrypto,对源码有修改
duktape-android com.squareup.duktape 一个新的小巧的超精简可嵌入式JavaScript引擎,支付宝已经整合到com.alipay.jsbridge.duktape
achartengine org.achartengine 老牌的图表库
android-stackblur com.enrique.stackblur 图像高斯模糊,支付宝已经整合到com.alipay.android.phone.o2o.o2ocommon.util.blur
android-gif-drawable pl.droidsonroids.gif Android显示Gif动图
libyuv 在Android上使用Google开源的图像处理库libyuv进行高效的图像处理
css-layout Facebook开源跨平台前端布局引擎Yoga,在源码中没有找到对应的类
libjpeg-turbo libjpeg-turbo 是一个专门为 x86 和 x86-64 处理器优化的高速 libjpeg 的改进版本
ViewPagerIndicator com.viewpagerindicator 老牌的ViewPagerIndicator,支付宝已经整合到com.alipay.mobile.commonui.widget.hgridview
CircleImageView de.hdodenhof.circleimageview 圆角图片库,支付宝已经整合到com.alipay.android.phone.wallet.sharetoken.view
ProgressWheel 环形进度的UI库
NineOldAndroids com.nineoldandroids.view 动画兼容库
DiskLruCache Android”硬盘”缓存
ijkplayer tv.danmaku.ijk.media.player Bilibili开源的视频播放库
DanmakuFlameMaster Bilibili开源的中二病开源弹幕引擎–烈焰弹幕
androidquery 轻量级的Android开源框架
TheMVP com.kymjs.themvp 一个MVP框架,支付宝已经整合到com.alipay.mobile.android.mvp
tagsoup html解析框架
wire com.squareup.wire Clean, lightweight protocol buffers for Android and Java
okio okio java IO框架
okhttp okhttp3 著名网络框架,支付宝已经整合到com.alipay.mobile.common.transportext.biz.spdy
androidquery com.androidquery Android-query框架能够快速的,比传统开发android所要编写的代码要少得很多,容易阅读
XRecyclerView 源码中未找到
dagger 依赖注入框架,源码中未找到
androidannotations org.androidannotations 另一个注入框架
EventBus Android事件总线
zlib 数据压缩用的库
aspectj org.aspectj 面向切面的框架
thrift org.apache.thrift 一个软件框架,用来进行可扩展且跨语言的服务的开发
flexbox-layout com.google.android.flexbox Google 开源的Android 排版库
ormlite com.j256.ormlite orm数据库框架
Android-Zip4j net.lingala.zip4j Android带密码解压库
AndFix com.alipay.euler.andfix Android Hotfix框架

关于其他使用到第三方push库,这里就没有列出来,有兴趣的同学,可以自行研究。

总结

通过反编译,支付宝使用了列表中的开源框架,由于支付宝版本的不一致,和他们列出来的支付宝 Android 版使用的开源组件,有些出入。
从中看出,支付宝对一些大公司成熟的开源框架,比较青睐,比如google,square的一系列框架。那哪些是可以借鉴的。

常用库

惊喜库(新学的)

关于支付宝使用的框架就分析到这里,发现支付宝使用的有些库还是非常值得参考的。下次准备分析下淘宝,看看阿里系的app有何不同之处。

yeungeek wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
曾经有一份打赏放在我面前,我没有珍惜.如果上天给我再来一次的机会,我会说三个字:赏死我.