市场上新闻类的应用今日头条因为其优质的文章和良好的口碑,所以使用用户相当广泛,本人也是头条粉丝,呵呵。天天用着这么优秀的应用,对于一个开发者当然想了解下他们用的是什么技术,很久以前用过dex2jar、JD-GUI、apktool等反编译工具,这些工具用起来略显麻烦,一大推步骤和命令行,今天使用一款简介的工具,classyshark,现在官网最新是7.2版本,我们就使用这个来分析今日头条5.9.8这个版本。
我们下载jar后直接双击点开就可以,然后填上我们下载保存在本地apk的路径即可分析,如下图:
可以看到头条分了三个classes.dex文件,说明方法使用的很多,编译版本是Android6.0最低适配4.0,so库有很多使用第三方的:
- libandfix.so 热修复框架AndFix
- libcocklogic 友盟
- libgif android-gif-drawable是一个用于显示GIF图片的Android组件
- libimagepipeline.so facebook fresco
- libweibosdkcore.so 微博SDK
我们再看看它的包结构:
我们可以看到它的方法总共有8千多,超过了65536,所以使用了MultiDex,通过包名可以分析出来:
- Retrofit 这个不解释了,最好的网络请求框架
- ijkplayer B站的开源框架
- autolayout 应该是自己实现的一套布局方案
- xiaomi 小米推送
- com.bytedance 头条业务逻辑
- alipay.sdk 阿里支付
- pulltorefresh 上拉下拉加载框架(作者已停更)
- umeng 友盟
- gson 谷歌官方json解析
除此之外还能看到,今日头条地图定位使用的是高德地图,日志监控使用的是听云,差不多大概是使用以上的技术吧,当然还有一些就不一一列举了,通过这个我们可以大概了解到大厂所使用的技术,从而从中借鉴应用到自己的项目当中。