如何从技术上全面分析一款Android竞品?

这是我最近在知乎上的回答,答完后发现答歪了,但不少同学感觉还有些帮助,因此整理成文分享给大家。

问题:

如何从技术上全面分析一款android app?

我的回答:

泻药,简单说下吧,经常干这事,国内外的竞品基本扒了个遍。

其实分析不只是看技术,既然你只问技术,我就仅从技术角度回答下,我主要是从以下几个方面分析:

1. 直接看代码

是的,完全不做混淆的App比你想象的要多得多,想咋看就咋看,不要太爽。即便是混淆过的代码,还是有不被混淆的部分,就算它混淆做的好,硬着头皮也能看下去。不过一般你不会有兴趣的,尤其代码写得不咋地的时候,看得让人糟心,因此我看代码主要有两个目的:

  • 分析这款竞品的代码质量,以对这个团队技术水平有个大致认识,结合他们更新的频率,基本可以猜出来是一个怎样水平的团队。
  • 找我关心的功能的技术方案,看看业内同行是怎么实现的,比如说夜间模式,看似简单,其实有很多不同的实现手法,在体验,代码维护上如何做到最佳,是值得深究的问题。

2. 抓包看请求

关于如何抓包有很多方法,一般而言Fiddler这种就够了,通过分析他们的请求,可以看出他们的API设计水平,业务的实现方案,一般在一个领域里做得好与做得久的产品,其API应该是经历了非常多版本的演进与改版,很多坑人家都经历过了,这时候的API接口设计, 往往很值得借鉴,对于你今后的可扩展性非常有帮助。

另外,我们做海外App的,碰到的很多对手其实都背景不明,可能是任何一个国家的创业小公司,但通过分析其域名注册信息,发现大多数有力的竞争对手,还都是咱国内的同行,不得不佩服中国互联网发展之迅猛啊。其实通过API, 或者扒代码,也基本能判断是哪家公司,啥背景来着。为什么需要知道?知己知彼嘛。

3. 分析app数据

主要是指package下面的各种preference, file, database, cache等等,我基本每个文件都会瞧一瞧,大致就能猜出来这些东西是做什么用的,数据库如何设计的,缓存如何设计的,看完之后,凭借自己的经验与想象,就会对这款应用有更直观的认识。比如手机淘宝里的Hybrid方案如何实现?结合手淘的公开分享内容,加上抓包分析,观察app数据,就会有更为深刻的认识。

4. 了解各家技术方案

看同行们都用了那些好的技术方案,好的开源框架,混淆了?不要紧,开源项目包名一般不混淆,这种不局限于竞品,各种国内外知名Android App大家都可以去看看,看完就知道啥开源项目目前最流行,看到自己没听过的,就去Search一下,也许不经意间就发现一款感动到哭的开源项目,或者超级好用的服务,我有不少好东西都是通过这种方式了解到的。


此文也收录在我的微信技术公众号Android程序员,各位可以通过搜索微信ID:AndroidTrending关注我, 亦可扫码关注。

扫码关注Android程序员

推荐阅读更多精彩内容