年前在掘金上看到一篇文章支付宝 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有何不同之处。