菜鸟-资深-大牛必进之路 Android完整知识体系路线( 二 )


Android框架层源码掌握

  • Android包管理机制 , 核心PackageManagerService
  • Window管理 , 核心WindowManagerService
  • Android Activity启动和管理 , 核心ActivityManagerService
  • 根Activity工作流程
  • Context关联类
各种原理 , 经典第三方库源码系列
  • 自定义LayoutManager , RecyclerView中如何自定义LayoutManager
  • VLayout实现原理 , 即如何自定义LayoutManager
  • Glide加载原理 , 缓存方案 , LRU算法
  • Retrofit的实现与原理
  • OKHttp3的使用 , 网络请求中的Intercept
  • EventBus实现原理
  • ButterKnife实现原理
  • RxJava实现原理
  • Dagger依赖注入
  • 热修复实现原理 , 解决方案
  • 组件化原理和解决方案
Android进程通信以及多进程开发Android 多进程和Application关系
经典解决方案:多进程通信解决方案:Andromeda
  • Android动画机制
  • Android绘图原理
  • Android页面恢复
Android的页面恢复采用以下两个方法:
  • onSaveInstanceState(Bundle outState)
  • onRestoreInstanceState(Bundle savedInstanceState)
onSaveInstanceState: 当Activity容易被系统销毁时 , 会触发该方法 。具体的说
  • 用户点击Home键
  • 用户点击Home键 , 切换到其他应用程序
  • 有电话来了等附加操作
混合开发及Android WebView应用混合开发涉及到的知识点主要包括:
  • APP调用WebView加载url
  • 掌握WebView的封装 , 了解所有的WebSettings配置 , 掌握WebViewClient WebChromeClient
  • 掌握WebView和Native双向通信机制 , 会自己封装双向通信中间件
  • 对WebView的封装可参考:GitHub: AgentWeb
  • 对通信中间件原理理解:GitHub:webprogress
Gradle , 自动化构建 , 持续集成相关Android系统
Android Studio编译过程
其中使用到的编译工具:aapt、aidl、Java Compiler、dex、 zipalign
主要步骤描述:
  • 通过aapt打包res资源文件 , 生成R.java、resources.arsc和res文件(二进制 & 非二进制如res/raw和pic保持原样)
  • 处理.aidl文件 , 生成对应的Java接口文件
  • 通过Java Compiler编译R.java、Java接口文件、Java源文件 , 生成.class文件
  • 通过dex命令 , 将.class文件和第三方库中的.class文件处理生成classes.dex
  • 通过apkbuilder工具 , 将aapt生成的resources.arsc和res文件、assets文件和-classes.dex一起打包生成apk
  • 通过Jarsigner工具 , 对上面的apk进行debug或release签名
  • 通过zipalign工具 , 将签名后的apk进行对齐处理 。
App启动加载过程Android虚拟机 Android App运行的沙箱原则
Android架构
在Android源码中最重要的三个类:ActivityManagerService/PackageManagerService/View , 推荐大家周末的时候可以去阅读下这部分的源码 , 阅读源码能提高我们今后设计架构自己代码的能力 , 同时也能从底层了解整个android系统的运行原理 , 其他一些比如主线程的消息循环、主线程如何和AMS如何跨进程交互、SystemServer进程中的各种Service的工作方式、AsyncTask的工作原理等 。这些知识也是作为一个Android高级开发工程师必须掌握的 , 不能整天沉溺于ui和四大组件的交互 , 要站在更高的角度去考虑Android的有些问题 。
  • MVC模式
  • MVP模式
  • MVVM模式
  • CLEAN模式
  • 组件化开发
  • 跨平台开发:Flutter、ReactNative(RN未来要黄 , 了解一下就好)
移动开发外围服务器开发相关
  • SpringBoot技术
  • Restful API开发
  • 网络协议理解:TCP/IP、HTTP/HTTPS、OSI七层协议
  • 授权认证协议: OAuth2.0 等
  • 基本的数据库技术
  • 数据缓存技术v:Memcached、redis , Web缓存原理
  • 消息队列技术
  • 监控、日志分析技术
前端开发相关前端开发知识很多 , 框架层出不穷 , 本质的东西却只有以下这些 。
  • 核心必备:html、css、JavaScript
  • 入门提高:浏览器兼容性、自定义UI和动效
  • 中级技能:框架层出不穷 , 当前以vue.js、react.js 为核心
  • 协作开发技能:包管理、模块化 , 工具采用 npm、webpack等
  • 高级技能:框架原理源码研究
开发调试各种工具


推荐阅读