美团拆包简析

版本: 美团v7.4.2 (23.9M)
环境: macOS Sierra, version 10.12.1 (16B2555)
工具: dex2jar2.0, jd-gui1.4.0, apktool2.2.1

java文件编译流程
1.编译java代码
2.用ProGuard在字节码层对.class进行混淆
3.把所有的.class文件打成.dex包放进apk

java文件反编译流程
1.解压apk文件得到dex
2.用dex2jar 把dex解压成 Jar文件
3.用JD-GUI 反编译jar包中的class文件。

tips:app使用multidex,需要使用dex2jar 2.0之后的版本,支持multidex,直接执行 d2j-dex2jar.sh mutidex.apk就可以转化所有dex文件到一个jar包中.

依赖

维纳斯(WNS,Wireless Network Service)

又名移动连通服务,是一个为APP提供高连通、高可靠、强安全的网络连接通道的服务;它利用QQ、微信等腾讯内部业务的海量接入数据来持续优化调度算法,并集成了用户就近接入、腾讯直通车、加密通道透传功能等等,提供了手机端SDK(IOS/Android),业务不必关心网络细节,即可安全与业务后台简单可靠的通讯。

greendao

GreenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。

Okio

一个由square公司开发的,它补充了java.io和java.nio的不足,以便能够更加方便,快速的访问、存储和处理你的数据。而OkHttp的底层也使用该库作为支持。而在开发中,使用该库可以大大给你带来方便。

Retrofit

Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求,其源码详见OkHttp Github。

RoboGuice

一个旨在简化Android开发和消除类依赖的注入框架,使用了Google的Guice库。

RxAndroid

RxJava的扩展, 优雅地处理异步请求. RxAndroid配合Lambda表达式, 精简处理回调, 使程序更具有可读性. Rx作为Android最优秀的开源库之一, 极大地提高生产力, 我们需要掌握. 本文由浅入深, 介绍一些常见的使用方法, 并附有源码.

  • RxBinding
  • EventBus
Rxlifecycle

RxJava和RxAndroid越来越被人熟知,简洁的语法,配合Java8 Lambda表达式,使代码的结构更加清晰,通过线程调度器更容易控制和切换线程,种种优点,使用它的人也越来越多。但是使用不好,很容易导致内存泄露。就使被用来严格控制由于发布了一个订阅后,由于没有及时取消,导致Activity/Fragment无法销毁导致的内存泄露。

flurry

You can gain deep insight into your customer’s behavior very quickly and with little effort using Flurry’s Analytics service. The SDK integration process is designed to be as easy as possible with a basic setup you can complete in a short period of time.

protocolbuffer

是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

photoview

Android 图片浏览功能 图片放大缩小
使用 photoview 双击或双指缩放的ImageView 使用多点触控和双击。 滚动,以平滑滚动甩。

开源地址: https://github.com/chrisbanes/Android-PullToRefresh

PullToRefresh

一款支持ListView,GridView,ViewPager,ScrollView,WebView等一切可以拖动,并实现上下左右拖动刷新数据的框架

Firefly

开源地址: https://github.com/meituan/Firefly Lightweight thrift client code generator and runtime library for Android and Java.

Code generated by firefly has much fewer methods(about 1%) and lines than standard thrift code, which helps applications avoid the notorious 64k limit on methods in Android applications.

Robust

http://tech.meituan.com/android_robust.html
去年底的Android Dev Summit上,Google高调发布了Android Studio 2.0,其中最重要的新特性Instant Run,实现了对代码修改的实时生效(热插拔)。我们在了解Instant Run原理之后,实现了一个兼容性更强的热更新方案,这就是产品化的hotpatch框架--Robust。

张鹏宇

继续阅读此作者的更多文章