分析应用的技术框架和开源库

作者: SpikeKing | 来源:发表于2016-02-12 15:03 被阅读3978次

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录.

Shark

本文的合集已经编著成书,高级Android开发强化实战,欢迎各位读友的建议和指导。在京东即可购买:https://item.jd.com/12385680.html

Android

App应用本质上是一个apk包, 即一个zip包, 可以直接显示其中的内容. 通过apk文件, 我们可以获知apk的版本信息, so库和第三方库, 并了解一些主流公司的应用框架. 分析工具主要是ApkToolClassyShark, 本人比较喜欢Shark工具. 我使用ClassyShark分析一下美团的框架, 也可以按照这个原理, 分析其他App的基本架构.

本文是ClassyShark的官方唯一中文参考文档.

让我们看看, 有什么好玩且有用的架构信息?


1 框架

框架

美团的编译版本非常新, 紧跟时代, 23版本(Android 6.0).
但是TargetSdkVersion仍然是22版本(Android 5.1), 推荐使用5.1.
最低版本是16(Android 4.1), 4.1以下的手机无法运行.

使用MultiDex, 而且竟然有三个, 说明方法非常之多, 可能引入了大量第三方库.


2 方法

方法

文件非常之多, 共有9万多个, 使用了大量的主流开源库, 非常易于管理.
我来介绍一下这些库, 不认识的朋友最好学习一下, 这些都是非常流行的开源库.

2.1 com

sankuai, 美团的核心类;
xiaomi, 小米推送(xiaomi);
squareup, Squareup的EventBus(otto), okhttp, picasso;
readystatesoftware, 状态栏沉浸效果库;
dianping, 大众点评, 已经合并一家, 东西也得用;
baidu, 百度地图;
viewpagerindicator, viewpager的滚动效果, 早期实现toolbar效果的方式;
weibo, 新浪微博;
fasterxml, 即jackson, json解析库;
iflytek, 科大讯飞的语音集成;
flurry, 统计库;
actionbarsherlock, actionBar的Tab效果, 和viewpagerindicator一起用.
meituan, 美团的核心类;
alipay, 支付宝;
handmark, 下拉刷新;
ms, Square的TextView文字扩展库, ExpandableTextView;
facebook, 图片处理库, 美团有大量的图片需求;
google, Gson解析库, ZXing二维码识别库, Dagger依赖注入;
unionpay, 银联支付;
tencent, 腾讯的QQ和微信;
ta, utdid2, 消息推送;
huawei, 华为手机的推送机制;
umpay, 联动优势支付;
amap, 高德地图;
nineoldandroids, ListView项的左右删除;
sina, 新浪登录;

2.2 其他

其他

de.greenrobot, EventBus, 又一个, 看来代码开发还很混乱, 没有统一;
retrofit, 网络库, 2.x版本, 升级很及时;
javax, java注释, 配合dagger2使用;
org, apache的一些库;
rx, rxjava异步请求处理;
okio, square的存储数据读写库;
uk, photoview实现图片放大缩小功能;
android, 这个才是android提供的支持库;
bolts, 异步task关联库.
roboguice, Google Guice, Google的依赖注入库, 和Dagger2重复;
net, lingala, 处理zip压缩的库.


3 总结

美团是一个技术非常Open的公司, 使用主流的开源框架, 减少开发成本.
这些开源库, 我也均有涉猎, 都是非常优秀的库, 不了解的朋友可以学习一下.
虽然方法很多, 但是使用开源库, 会大大减少开发成本, 增强应用稳定性.
Dagger+Retrofit+RxJava的业内标配, 美团也有所涉猎, 非常不错.

备注:
ClassyShark是查看Apk信息的软件, 功能非常强大, 省去反编译的步骤. 主要功能: 查看MultiDex的dex信息, 使用的NativeLibrary, 类和方法的数量统计.


通过分析App的开源库, 是不是感觉架构其实也不是那么难, 多涉猎些东西, 使用起来才会得心应手. 武器库里多些趁手的武器, 打仗才会无往不胜.

OK, that's all! Enjoy it.

相关文章

  • android开发业内标配

    转载,文/SpikeKing(简书作者) 原文链接:分析应用使用的技术框架和开源库 使用ClassyShark工具...

  • 分析应用的技术框架和开源库

    欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录. App应用本质上是一个apk包,...

  • 优秀博客一览

    转载自:技术风骚的牛人博客iOS 开源库、文章、源码整理iOS技术必看—库和框架大全中文 iOS/Mac 开发博客...

  • 发布自己的Android开源项目

    随着移动开发技术的发展,越来越多的开源框架和开源库诞生了,尤其是以iOS下的Pod和Android下的Gradle...

  • 2018-01-09 Android中常用的优秀开源框架

    Android开源框架库分类,挑选出最常用,最实用的开源项目,本篇主要介绍的是优秀开源框架库和项目,UI个性化控件...

  • Android |《看完不忘系列》之okhttp

    嗨,我是哈利迪~《看完不忘系列》将以从树干到细枝的思路分析一些技术框架,本文将对开源项目okhttp网络库进行介绍...

  • Hibernate初识

    Hibernate框架Hibernate框架简化了java应用程序与数据库交互的开发。Hibernate是一个开源...

  • SSM Spring

    Spring 分层的java se/ee 应用 全栈式 轻量级开源框架 全栈式:对主流技术和框架进行整合,对三层架...

  • CI基础

    一简介 Web应用程序框架; 开源免费; 真正的轻量级框架,核心系统需要的库小,库通过动态请求加载,速度快; 采用...

  • 腾讯开源微信数据库框架WCDB

    腾讯开源微信数据库框架WCDB 腾讯开源微信数据库框架WCDB

网友评论

  • 隋胖胖LoveFat:亲,美团APK打包没有混淆过么?我们自己的APK是经过混淆的,如何用classyshark查看混淆前的源码呢?
  • jackLee:干货,学习了。
  • h4de5:楼主也是够吊的,google官方居然收录了这篇文章。我就是从官方链接里面过来的。
    SpikeKing:@h4de5 排第二的中文还是抄的我的, 我去, 能不能加个引用链接.
    h4de5:@SpikeKing http://www.classyshark.com/p/know-how.html
    SpikeKing:@h4de5 哈哈, 你看错了吧, 链接是啥, 我看看.
  • 409787253778:确实有些冗余
  • 078a7bd2a237:美团有一个技术Wiki 我见过他们技术学院院长 跟我们分享了 确实很好
    SpikeKing:@itue 非常不错的公司, 多用开源库, 减少重复发明轮子, 才能提升编程的生产力.
  • lhl_012:TargetSdkVersion仍然是22版本(Android 5.1), 即6.0手机无法运行.这句话确定正确吗?应该在6.0上面能运行吧
    lhl_012:@SpikeKing 23是6.0,一旦设置 就需要用到动态权限管理,自己申请,所以国内主流的都是22,还沿用旧的权限管理方式
    SpikeKing:@lhl_012 3Q, 写错了. 应该是"推荐使用5.1".
  • 痕迹Dev:重叠部分太多了。
    SScience:确实是重复的实在太多了,虽然使用第三方好处多,但是也不能这么搞啊?太臃肿了,都不协调开发的 :joy:
    SpikeKing:@痕迹BLANK 应该是分部门合作的,有些库的功能雷同
  • acc8aee6f63f:赞,对我很有帮助
  • 虚无void:学习了
  • ce04e8cfb020:看上去不错哟,学习了!对于学习的深入怎么去了解框架?以及安卓开发
    SpikeKing:@Jet_Wang 可以了解一下哪些常用开源库被主流公司使用了.
  • i卓:厉害,学习了😁
    SpikeKing:@9a584795fe0f 也可以分析其他的,微信的也挺有意思的,特别干净,开源库特别少。

本文标题:分析应用的技术框架和开源库

本文链接:https://www.haomeiwen.com/subject/steukttx.html