ClassyShark是Google开发的一个用于Android App分析的工具,可以分析jar, class, apk, dex, so, aar类型的文件。利用Classyshark对App进行分析,可以了解到该App采用了什么样的框架,用到哪些开源组件和技术,从而了解技术趋势,做到学以致用。
Classyshark下载地址https://github.com/google/android-classyshark/releases。
使用文档:https://github.com/google/android-classyshark/blob/master/CommandLine.pdf
使用起来很简单,通过如下命令启动:
java -jar ClassyShark.jar
然后将需要分析的apk拖进去就行了。本文分析了滴滴出行用户端,春雨医生用户端和医生端apk,分析结果展示如下。
嘀嘀出行用户端:
总结:
两个Dex文件
网络通信:OkHttp(Square)
图片加载:UniversalImageLoader,Glide
支付:阿里支付,微信支付
数据格式:Json,Protocol Buffer
Json解析:Gson(Google)
Protocol Buffer解析:Protobuf(Google),Wire(Square)
地图导航:高德地图,腾讯地图
推送:个推
语音识别:科大讯飞
人脸识别和运动识别:旷世科技
事件订阅发布:AndroidEventBus
Crash信息收集:腾讯Bugly
代码防反编译:阿里
内存泄露检测:LeakCanary(Square)
加密算法:conceal(Facebook)
二维码扫描:ZXing (Google)
压缩图片:WebP(Google)
UI组件:joooonho(四角矩形),materialishprogress(进度条),android-Ultra-Pull-To-Refresh(下拉刷新),Gif显示控件
开发模式:MVP
春雨医生诊所端App:
HttpClient网络库,HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。HttpClient 用到了 Apache Jakarta common 下的子项目 codec commons-codec是Apache下面的一个加解密开发包,提供了Base64/MD5/SHA1/SHA256加密算法。
PhotoView:
支持单点/多点触摸,即时缩放图片;
支持平滑滚动;
在滑动父控件下能够运行良好;(例如:ViewPager)
当用户的触点改变时可以触发通知。
总结:
两个dex文件
定位:高德地图
推送:个推
网络:OkHttp+HttpClient
性能监控:听云
视频聊天:菊风
三方登录/分享:新浪,腾讯
SqlLite数据库DAO:GreenDao
事件订阅/发布:EventBus,AndroidEventBus
图片缩放:ImageViewZoom,PhotoView
注意:这不是用到的所有的库,有些库做了代码混淆,不能识别出是什么库,比如图片加载的Picasso库。
春雨医生用户端:
除了上述医生端用到的组件外,还用到了:
总结:
两个dex文件
定位:高德地图
推送:个推
网络:OkHttp+HttpClient
图片加载:Picasso
性能监控:听云
视频聊天:菊风
三方登录/分享:新浪,腾讯
支付工具:阿里支付,微信支付,银联支付
事件订阅/发布:EventBus
图片缩放:ImageViewZoom,PhotoView
二维码扫描:ZXing
数据收集:Countly,Flurry
语音识别:百度语音
图标绘制:MPAndroidChart