ClassyShark——apk分析利器

背景

对于一个感兴趣的android非开源项目,通常使用逆向工程查看apk中的内容,俗称反编译。工具大概包括dex2jarJD-GUIapktoolprocyon,这些工具使用起来相对比较麻烦,如果我们只想知道该项目的基本框架、使用到哪些开源项目的话,那么就有些浪费时间。
对于一些大厂的项目,我们还比较关心的是用到了哪些新的框架和技术,对于新技术的流行程度和使用普遍程度有个比较好的把握,指导是否需要进行深度的使用学习。比如最近的比较流行的rxjava,热更新技术等等。

ClassyShark

ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。

使用方法

  1. 打开apk文件java -jar ClassyShark.jar -open <YOUR_APK.apk>
  2. 将生成的所有数据导出到文本文件里java -jar ClassyShark.jar -dump <BINARY_FILE>
  3. 将指定类生成的文件导出到文本文件里java -jar ClassyShark.jar -dump <BINARY_FILE> <FULLY_QUALIFIED_CLASS_NAME>
  4. 打开ClassyShark,在GUI界面展示某特定的类
  5. java -jar ClassyShark.jar -open <BINARY_FILE> <FULLY_QUALIFIED_CLASS_NAME>
  6. 检测APKjava -jar ClassyShark.jar -inspect <YOUR_APK.apk>
  7. 导出所有的字符串 java -jar ClassyShark.jar -stringdump <YOUR_APK.apk>

具体使用

以美团项目为例,让我们看看能得到什么有用的信息

java -jar ClassyShark.jar -open ~/Downloads/group-351_3-meituan_.apk

image

美团项目中使用了MultiDex,并且classes.dex文件有3个,说明方法数肯定非常多。
美团的编译版本非常新, 紧跟时代, 23版本(Android 6.0)。
并且TargetSdkVersion也是23版本,紧跟技术方向。
最低版本是16(Android 4.1), 4.1以下的手机无法运行。
而且有好多的so库,有美团自己的,也有好多是第三方的库。

image

可以看到9万多个方法,怪不得会有3个classes.dex文件。
项目中应用了大量的第三方库,并且一般都是主流的比较稳定的开源库。
我们来看下都用到了哪些库

  • ZXing二维码识别库;
    amap: 高德地图;
  • PullToRefresh使用最广的下拉刷新组件;
  • jackson, json解析库;
  • NineOldAndroids Jake大神的android兼容库
  • fresco,facebook出品的图片处理库,图片加载节省很多内存,避免OOM。
  • RxJavajava响应式编程库,再加上SquareRetrofit库的支持,可以说未来就是rxjava的天下,目前市面上已经有很多基于rxjava的项目;我们团队也将基于rxjava来开发项目;
    圈内最牛逼的开源公司Square,Jake大神所在的公司,可以毫不夸张的说,Square的开源项目使得Android开发提速了好几年
  • okhttp网络请求库,已被官方采用;
  • retrofit非常牛逼的网络请求库,配合rxjava和lambda使用,代码量减少90%;
  • otto事件总线;
  • picasso图片加载库;
  • dagger依赖注入框架;
  • ExpandableTextView可折叠的TextView
  • iflytek, 科大讯飞的语音集成;
  • ViewPagerIndicator还是Jake大神的项目,viewpager的滚动控件;
  • actionbarsherlock依然是Jake大神的项目,Actionbar的适配库,不过已经过时了;
  • 华为推送
  • SystemBarTint状态栏沉浸效果库
  • 百度地图
  • 新浪微博
  • 腾讯的QQ和微信
  • 大众点评,已经合并一家,东西也得用;
  • umpay, 联动优势支付;
  • 支付宝;
  • andfix阿里出品的android热更新框架;
  • flurry统计库;
  • 小米推送
  • http-request网络请求库;
  • EventBus事件总线库;
  • PhotoView放大缩小的图片处理库;
  • roboguice依赖注入框架,类似Dagger
  • zip4j处理zip压缩的库;
    link异步task关联库,很像rxjava

总结

从上面分析我们可见看出,美团是一个技术很开放的公司,对于框架的使用比较多,使用的基本都是主流的开发框架,减少开发成本,增强app的稳定性和体验,对于我们来说,有很大的借鉴意义。比如,目前都在试水的热更新框架,美团选择了阿里的andfix,那么该技术方案肯定是得到了美团团队的验证;另外,美团团队也是比较潮流的,Retrofit+Rxjava的潮流趋势已经不可阻挡,美团已经开始使用;但是,从项目引用库中我们也可以看到一些不足之处;比如,同一种框架引用了多种第三方库,如网络库(okhttp,http-request),图片加载库(fresco,picasso),事件总线(EventBusOtto),依赖注入(Dagger,roboguice),推送相关的库等很多重复的库,如果去掉重复的库那么可以节省很多的编译时间和apk包的大小;还有就是,我们基本可以断定,美团团队的内部并不能很好的统一,没有有效的沟通,代码开发很混乱,导致项目结构上的臃肿,重复库的使用等等问题。

通过分析App的项目结构和引用库的信息,我们大致掌握了该项目的架构,一些开发中的经验和不足,拓宽下开发视野,发现一些好用的开源库,增强我们的武器,这些都是我们在开发中可以借鉴的东西。



转自:http://w4lle.github.io/2016/02/15/ClassyShark%E2%80%94%E2%80%94%E5%88%86%E6%9E%90apk%E5%88%A9%E5%99%A8/#rd?sukey=014c68f407f2d3e1febc050027cff5815931ffa587e69e2e27c1c0f82c38b4e6bdf7ff1ee7a176145d47fc741ace10ed

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网易将军令是一款基于卡牌对战的策略手游,玩家需要通过收集、培养和搭配不同的将军和士兵卡牌来进行对战。APK分析主要是对这款游戏的安装包进行解析,可以了解到游戏的构成架构、资源文件以及代码逻辑等方面的信息。 首先,APK分析可以帮助我们深入了解游戏的开发框架和技术实现。通过分析APK文件,可以了解到游戏所采用的引擎、框架以及使用的技术,对于开发者来说,可以借鉴游戏的实现方式和技术手段,对于玩家来说,可以更好地理解游戏的运行原理和特性。 其次,APK分析也可以帮助我们了解游戏的资源文件和数据结构。通过分析APK文件中的资源文件,可以了解到游戏中所使用的图片、音频、视频等资源的来源和运用方式,同时也可以观察到游戏的数据结构和配置信息,对于玩家来说,可以更好地了解游戏内部的设计和制作,对游戏的策略和战术有更深入的认识。 最后,APK分析还可以帮助我们对游戏的安全性进行评估。通过分析APK文件中的代码逻辑和权限申请等信息,可以评估游戏的安全性和隐私保护情况,对于玩家来说,可以更加放心地使用这款游戏,对于开发者来说,也可以及时发现和解决潜在的安全问题。 总的来说,网易将军令APK分析可以帮助我们更深入地了解这款游戏的开发框架、资源文件和安全性情况,对于开发者和玩家都具有重要的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值