自从分析完手淘后,感觉已经过去了一个世纪了,尴尬。本来上次说要分析京东和美团的,也没有开始着手,最近对智能物流比较感兴趣,所以这次分析的是菜鸟裹裹App。京东和美团的只能等后面了,抱歉。
App信息
文件: cainiao4android_10004264.apk
大小: 27.5M
版本: 4.7.1
反编译源码
这次反编译工具依然是jadx(如果有更好的工具,可以在留言推荐下哦)。
这次分析从AndroidManifest.xml文件开始, 菜鸟App的包名:com.cainiao.wireless。
com.cainiao.wireless
源码分析:
AndroidManifest.xml中定义的Application:
AtlasBridgeApplication是atlas框架下apk的真正Application,容器框架结构图:
具体原理参考:Atlas
真正的入口:
那真正的入口在哪里?
在AtlasBridgeApplication的attachBaseContext方法中有一段代码:
可以看出实际加载的是BridgeApplicationDelegate这个类的attachBaseContext方法,该方法也有一段主要逻辑:
所以最后其实加载的真正入口就是在AndroidManifest.xml中的名称为REAL_APPLICATION的meta-data标签:
简单分析下 CainiaoApplication
实现了ReactApplication,加载CNReactPackage模块。
在调试状态下,可以开启LeakCanary,Stetho。
注册了ActivityLifecycleCallbacks回调,具体作用等后期模块分析,在具体介绍。
本次的目的主要分析使用的开源框架。
wireless包结构:
其他包结构
一些比较细节的或者改造过的库,没有去穷举。
通过上面库的使用分析,菜鸟app在hrbird上运用比较多,这个与实际的业务有关(具体哪些业务上使用了,接下来会有一些列文章来分析)。
其他一些库,和以前阿里系的还是比较类似,使用了很多的主流库。
接下来会对菜鸟app进行更深一步的分析,具体分析哪些内容,正在整理中。
原文链接:
http://yeungeek.com/2018/07/15/Android%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%A7%92%E5%BA%A6%E5%88%86%E6%9E%90App%E4%BD%BF%E7%94%A8%E7%9A%84%E5%BC%80%E6%BA%90%E6%A1%86%E6%9E%B6-3-%E8%8F%9C%E9%B8%9F%E8%A3%B9%E8%A3%B9/