haitend / StudySpace

Android知识体系梳理(移动架构方向)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

StudySpace

Android知识体系梳理(移动架构方向)

程序员职业发展规划

发展规划

Android高级工程师(架构师+大前端)

Android工程师职业发展方向技能图谱

http://naotu.baidu.com/file/1ab611f8592ee4b6a18b8592f4e78a51?token=4e73adda2edacf37 http://naotu.baidu.com/file/82fda7a3ad479fbff45908c463fdcd62?token=8ecbfaab1cc83b72

学习资源:

在线学习

极客帮 百度网盘资源

纸质书 / 电子书

free-programming-books-zh_CN http://www.xz577.com

他人积累

Android复习资料汇总 https://juejin.im/post/5d48e9c36fb9a06af13d50f9

成果积累

Github 开源 博客

知识体系

【L、外语】

【英语】

1 听说 https://pan.baidu.com/s/1arevLmUzXiuxP71r9MX2Vw

2 词句 墨墨背单词 《CET4 词汇》 《新东方英语•六级词汇词根+联想记忆法:乱序版》 《六级经典必背500句▪ 新东方英语学习丛书》

3 阅读 《每天读一点英文•那些妙趣横生的故事 (与美国人同步阅读的英语丛书)》 《经典短篇小说101篇(英文原版)》 《床头灯英语学习读本 纯英文版 1 傲慢与偏见》 《床头灯英语学习读本 纯英文版 2 彼得·潘》 《床头灯英语学习读本 I 简·爱》 《Thinking , Fast and Slow》

【日语】

1 词句语法 《新东方·日语语法新思维(初级)》 《新东方·日语语法新思维(中高级)》 《日语教育丛书•日语句法与篇章法》 《标准日本语》初级、中级

2 听说 《生活日语边听边说》 《说出日本人的每一天:日语会话4000句》

3 阅读 《日语阅读精选50篇》 《知日系列套装 (套装10本)》

【F、移动大前端跨平台】

【 跨平台开发技术】

*大前端知识体系 【前端自学路线】 https://www.cnblogs.com/qianguyihao/p/8776837.html 【初级学习资源】 Web 【进阶学习资源】 极客帮 -- 重学前端 https://time.geekbang.org/column/intro/154

-- HTML、CSS基础 HTML5和CSS3。要熟悉其中的新特性 -- JavaScript语法基础、JavaScript语法进阶 jQuery、Ajax等 ES6语法(JS新增的语法,promise、async等。) -- 移动Web开发、Bootstrap等。 要注意移动开发中的适配和兼容性问题 -- Vue 和 React 框架 -- Node.js 环境配置与使用 -- 自动化工具 构建工具 Webpack、构建工具 gulp、CSS 预处理器 Sass 等。 注意,Sass 比 Less 用得多,gulp 比 grunt 用得多 -- 编辑器相关 Sublime Text VS Code

  • WebView型 -- Hybrid DSBridge-Android WebViewJavascriptBridge

  • 全新型 -- Flutter

  • Web技术型 -- React Native Weex 微信小程序

  • JavaScript编译型-- chameleon、Taro、uni-app、mpvue、WePY 原理:先以 JavaScript 作为基础选定一个 DSL 框架,以这个 DSL 框架为标准在各端分别编译为不同的代码,各端分别有一个运行时框架或兼容组件库保证代码正确运行。

    1) Vue.js 与 UniApp https://uniapp.dcloud.io/

【 kotlin 】

极客帮: https://time.geekbang.org/course/intro/105

 《Kotlin从零到精通Android开发》

【C/C++/NDK】

【面试问题】 c++什么是构造函数、析构函数虚函数、纯虚函数的作用 c++的特性,什么是多态stl; C++指针和引用的区别

NDK android官方文档 https://developer.android.com/ndk

《Android C++高级编程 使用NDK 带书签目录 完整扫描版》

  • CMmake 1.ndk—bulid vs CMmake 2.Gcc/clang,CMake基础概念 3.CMake构建工具 4.CMkae优势,CMakelists.txt语法规则 5.CMamke编译过程 6.如何引入一个三方库,CMake分模块管理 7.CMake问题查询及学习方法

  • NDK应用 -- openGL图像处理、压缩算法

  • NDK应用 -- 音视频处理

  • 操作系统 Linux 、Shell 编程 《Linux 系统编程》 《鸟哥的私房菜》-- 电子书 《Linux命令行与shell脚本编程大全(第3版) - [美] Richard Blum》-- 电子书 《Android内核剖析》第一、二章

  • Python与机器学习 安卓高级NDK资料包

【M、主方向 - Android 架构】

【学习资源】 掘金 - DevYK 移动架构系列文章 https://juejin.im/user/578259398ac2470061f3a3fb

架构师发展方向(架构重构与设计**)

《 重构,改善既有代码的设计》 《clean code》 《十大开源库-- 视频课》 《 Android源码与设计模式》

面向对象设计** -- UML 与设计模式

设计模式

《设计模式之禅》 《大话设计模式》 《Head First设计模式》 《Android 源码与设计模式》

门面模式: https://blog.csdn.net/xingjiarong/article/details/50066133

主流框架设计**

*** 【主流框架】异步任务 -- RxJava / RxAndroid 框架学习 /RxBus http://mp.weixin.qq.com/s?__biz=MzIwMzYwMTk1NA==&mid=2247489050&idx=1&sn=4b9edc057cc6913dae1580e24d911e37&chksm=96cdb757a1ba3e41ee902bb12ee437ab3d93b64a5fefe030c5aa82184a6ebc63ec669178d6a1&mpshare=1&scene=23&srcid=0102Tu33NEz2xONdd4UzF1pC#rd https://juejin.im/book/5a09997cf265da432002bf6a https://juejin.im/post/5afc34396fb9a07aad17b686

RxJava3 https://juejin.im/post/5d1eeffe6fb9a07f0870b4e8

*** 【主流框架】网络框架 核心问题 1)多线程断点续传原理 2)线程池管理

Volley okHttp https://www.jianshu.com/p/230e2e2988e0 retrofit 手写网络加载框架 https://www.jianshu.com/p/3df395d8a6bc

*** 【主流框架】 Json解析框架 Gson fastJson

*** 【主流框架】图片加载 核心问题 LRUCache/DiskLruCache原理 图片加载原理

Glide 使用与原理,及坑 Glide 指导文档 https://mrfu.me/2016/02/27/Glide_Getting_Started/ Glide好处 -- 与PIcasso、Fresco对比 https://www.jianshu.com/p/ca5ce4444c37 Glide 详细使用 https://blog.csdn.net/sgiceleo/article/details/64440783 http://www.jianshu.com/p/e78407a18716 https://mrfu.me/2016/02/27/Glide_Displaying_Gifs_&_Videos/ Glide 使用优化 http://m.blog.csdn.net/plokmju88/article/details/78141155

Picasso与Glide对比 https://square.github.io/picasso/

*** 【主流框架】消息总线框架 -- EventBus 框架原理\LiveDataBus https://tech.meituan.com/2018/07/26/android-livedatabus.html

饿了么进程间事件分发库 -- HermesEventBus 事件分发基于EventBus,IPC基于Hermes

*** 【主流框架】数据库框架 GreenDao ORMLite Room LitePal

*** 【主流框架】 依赖注入框架 Dagger2 https://google.github.io/dagger/

ButterKnife

***【技术专题】 Jetpack dataBinding LiveData ROOM WorkManager ...

主流架构

架构MVP、MVVM、jetpack 1)MVVM + Jetpack

2)MVP WanmeiHelper ArmsComponent

组件化架构 -- ARouter、CC、AppJoint

《Android组件化架构 》 · https://pan.baidu.com/s/1pAVgIbSje74oQ14xb_zBMg

Android 技术专题与系统源码

《Android开发艺术探索》 《深入理解android 卷一.pdf》
《深入理解android 卷三.pdf》 《Android内核剖析》 《深入理解Android内核设计**》 《Android系统源代码情景分析》

***【技术专题】通信机制 -- Handler架构

消息机制 -- Handler/Looper/MessageQueue 通信原理与框架手写 <深入理解android 卷三.pdf> 第二章 <深入理解android 卷二.pdf> 第二章

http://www.jackywang.tech/AndroidInterview-Q-A/chinese/android/Handler%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86.html Android消息机制1-Handler(Java层)

【问】为什么不能在子线程中更新UI,根本原因是什么? 【问】为什么Looper.loop不会导致死循环/ANR? https://www.wanandroid.com/wenda/show/8685 【问】为什么Handler构造方法里边的Looper不是直接new? 【问】MessageQueue为什么要放在Looper私有构造方法里初始化? 【问】Handler post()逻辑是在哪个线程执行的?是由Looper所在的线程还是Handler所在的线程? 【问】MessageQueue.next()会因为发现了延迟消息而进行阻塞?那么为什么后面加入的非延迟消息没有被阻塞? 【问】Handler的dispatchMessage()分发消息的处理流程? 【问】手写Handler 简单架构?

***【技术专题】 异步任务框架原理 -- AsyncTask/HandlerThread/IntentService https://blog.csdn.net/lyz_zyx/article/details/60598656 https://blog.csdn.net/lyz_zyx/article/details/60869762

***【技术专题】 Android IPC -- 进程间通信机制 为什么Android要采用Binder作为IPC机制? - Gityuan的回答

  • AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的区别;
  • Binder:从Java层大概理解Binder的工作原理,懂Parcel对象的使用;
  • 多进程:Linux多进程的运行机制,管道、共享内存、Messenger、Socket、信号量

AIDL https://xiaozhuanlan.com/topic/9405168327 《深入理解Android》卷一二三 http://www.jackywang.tech/AndroidInterview-Q-A/chinese/android/%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E8%AE%AF%E6%9C%BA%E5%88%B6Binder.html https://developer.android.com/guide/components/aidl

Binder机制

Intent 数据传递与内核 Bundle Parcleable Serialize 隐式调用 Intent 是如何实现 Activity、Service 等之间的解耦合的?

Sp跨进程问题 基于ContentProvider的实现 腾讯开源基于mmap的实现 -- MMKV 共享内存与存储映射(mmap) https://www.cnblogs.com/huangfuyuan/p/9476951.html

Socket通信原理

共享内存

***【技术专题】Framework源码 与 设计模式 -- AMS 《Android内核剖析》 《深入理解Android内核设计**》 《Android系统源代码情景分析》

***【技术专题】Framework源码 与 设计模式 -- 四大组件 《Android开发艺术探索》 《深入理解android 卷二》 第六章 AMS

Activity 与 WMS https://www.jianshu.com/p/8d58804d4bf4 https://www.jianshu.com/p/9ecea420eb52 《深入理解Android》

Broadcast LocalBroadcastManager

Service 生命周期及AMS关系 两种启动方式原理 Service进程优先级调优与实践 【问】 Service的onBind和onReBind的关联 【问】onServiceDisconnected(ComponentName className)和binderDied()的区别

Context 原理解析 application动态切换,让一个应用有两个application实现加固与安全

Fragment 内核 调用栈管理 生命周期管理源码

***【技术专题】Framework源码 与 设计模式 -- PKMS 应用管理
<深入理解android 卷二.pdf> 第四章 PackageManagerService AMS,Servicemanger

【问】进程和 Application 的生命周期; 【问】App 是如何沙箱化,为什么要这么做 【问】权限机制 底层的权限是如何进行 grant 的

***【技术专题】 View 绘制 & 高级动画绘制、动画原理 https://blog.csdn.net/lfdfhl/article/details/78566702

  • 搞懂view的滑动原理
  • 搞懂如何实现弹性滑动
  • 搞懂view的滑动冲突
  • 搞懂view的measure、layout和draw

【源码学习】 1)RecycleView
https://mp.weixin.qq.com/s/S7BJAUCQeSHQ4uPqd3N4qA https://juejin.im/post/5c9488eef265da612b1ab960

2)探探滑动卡片View https://github.com/xmuSistone/CardSlidePanel.git

  • 属性动画 属性动画使用、差值器&估值器 Animate Vector Drawables(矢量动画))、 SVG(SVG概述、SVG图片使用实例、SVG动画使用实例)、 GIF动画引擎框架、 自定义动画框架 MaterialDesign动画(Touch feedback(触摸反馈)、 Reveal effect(揭露效果)、 Activity transitions(Activity转换效果)、 Curved motion(曲线运动)、

  • View System -- 绘制与优化原理 《Android开发艺术探索》 <深入理解android 卷一.pdf> 8(视图绘制原理) <深入理解android 卷三.pdf> 第四、五、六章 Window绘制、输入系统

DisplayManager WindowManager AcitivtyManager Surface vs SurfaceFlinger

***【技术专题】WebView 与 WebKit 内核模块 《深入理解Android:WebKit卷+(移动开发)》

高级技术 - Android虚拟机、插件化

Java/Android虚拟机原理

【极客帮】深入拆解Java虚拟机: https://time.geekbang.org/column/intro/108 【并发编程网】 Java 内存模型系列文章: http://ifeve.com/java-memory-model-0/ JIT(Just In Time)Compilation:

JVM优化之逃逸分析与分配消除 http://ifeve.com/jvm%e4%bc%98%e5%8c%96%e4%b9%8b%e9%80%83%e9%80%b8%e5%88%86%e6%9e%90%e4%b8%8e%e5%88%86%e9%85%8d%e6%b6%88%e9%99%a4/

《Java虚拟机规范 Java SE 8版》 《深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版)》-- 周志明 《深入理解Android:Java虚拟机ART》-- 邓凡平 (900页巨著)

【面试问题】 如果想替换第三方jar中的某个class文件,或者在开发时你的class文件与jar中的重名,但是你想使用自己的应该如何解决?如果你替换掉某个方法又该怎么解决?

####2 Android Studio 编译打包过程 manifest及资源文件merge过程 https://developer.android.com/studio/build/manifest-merge?hl=zh-cn Asset 资源文件加密 https://www.jianshu.com/p/97bfe485e179

签名机制 https://www.jianshu.com/p/286d2b372334

插件化原理

《Android插件化开发指南》- 包建强 插件化发展概述: https://blog.csdn.net/mantianku/article/details/80561033 手机京东技术演进启示: https://blog.csdn.net/xinzhou201/article/details/80881604

  • hook技术 ClassLoader核心原理 Dex文件结构及加载原理 hook一个无需注册的Activity实战 hook一个主题,实现资源的远程加载实战

【实践】 theme主题换肤框架手写实践

2) atlas https://mp.weixin.qq.com/s?__biz=MzAxNDEwNjk5OQ==&mid=2650400348&idx=1&sn=99bc1bce932c5b9000d5b54afa2de70e https://blog.csdn.net/xiangzhihong8/article/details/80275201

3) Shadow

【B、基础知识】

Java 技术栈 -- JDK

并发编程网 http://ifeve.com/java-concureent/ 百度云盘 https://pan.baidu.com/s/1fgg3EvwagSDIbsFTA8RTGw 《Java 8实战 (图灵程序设计丛书)》 《Java多线程并发编程核心技术》 《Java并发编程艺术》 《Java编程**(第4版)》 《Java语言程序设计-进阶篇(原书第10版)》 《Effective Java》 《Java程序性能优化》

并发编程

  • 多线程与线程池原理

  • 并发 -- 锁机制 深入理解java内存模型系列文章 锁机制:synchronized、Lock、Condition Java 中的锁

  • 多线程容器 深入分析ConcurrentHashMap

Java 容器类与实现原理

ArrayList 、LinkedList HashMap LinkedHashMap ConcurrentHashMap的锁的实现

反射、动态代理

Java反射机制原理 -- http://www.importnew.com/23902.html https://mp.weixin.qq.com/s/fXEYulgiTNgun0pJswRhXA 动态代理 -- https://www.cnblogs.com/JackSparrow-/p/10665928.html

JDK 7,8,9,10 版本特性

《Java 8实战》

Java 个版本特性与变化 内部类

泛型与泛型擦除

正则表达式

lambda 《精通lambda表达式 Java多核编程》

注解 & APT & AOP

Java 《注解篇》 基本概念讲解 Java 《注解篇》 运行时注解 Java 《注解篇》 编译时注解 https://pan.baidu.com/s/13xOmB0SaZsrb4pbO8kUU-Q

I/O

java的异常机制

http://www.xz577.com/j/33988.html

加密与解密

《Java加密与解密的艺术-梁栋》

网络协议、操作系统、计算机组成原理

计算机组成原理

https://time.geekbang.org/column/article/91427 《计算机组成与设计:软 / 硬件接口》

操纵系统

《现代操作系统(原书第3版) (计算机科学丛书)》

编译原理与汇编语言

计算机网络 -- Http 网络协议

   极客时间专题课

https://time.geekbang.org/column/article/97822

网络优化 -- 从DNS开始 https://juejin.im/post/5d40eae66fb9a06b2442f898

《图解Http》 HTTP协议详解(真的很经典) - Hundre - 博客园 - http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html?utm_source=qq&utm_medium=social

数理逻辑、数据结构、算法

《啊哈!算法》 《王晓华-算法的乐趣》 《数据结构与算法分析》Java\C版

算法课程 (百盘云盘) 《玩转数据结构 从入门到进阶》 《玩转算法面试 leetcode》 慕课网 https://coding.imooc.com/class/chapter/71.html#Anchor

牛客刷题 https://www.nowcoder.com

【P、项目实践】

Gradle工具

https://juejin.im/post/5a69c0ccf265da3e2a0dc9aa

Gradle学习博客 https://blog.csdn.net/innost/article/details/48228651 https://blog.csdn.net/lastsweetop/article/details/79053746

自定义配置项目构建过程 ; implementation - api https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa

gradle 插件如何hook打包过程,从而实现功能,如减少apk大小,dex分包等

  • Maven 仓库插件 《Maven实战》

  • 多渠道打包 部门分享 《Android组件化架构》

项目应用实践 -- 问题&方案

https://www.cnblogs.com/soaringEveryday/p/4835839.html

  • 工作项目问题总结

  • 适配方案 1) 屏幕适配框架 github 谷歌的小弟

2)SDK版本变化与适配方案 Android P版本应用兼容性适配技术指导 Android P 兼容与适配 - 简书 Android Q的适配

3) 主流机型的适配 1、按HOME键页面被杀死问题 2、点图标。应用重新启动问题

非功能相关 -- 稳定性、性能、问题排查、代码优化

《Android移动性能实战》 《Android应用性能优化最佳实践》 《性能之巅》 南尘 - 性能优化系列文章 https://nanchen2251.github.io 掘金 - DevYK 性能优化系列文章 https://juejin.im/user/578259398ac2470061f3a3fb

《人月神话(二十周年纪念版)》 《Android软件安全与逆向分析》 《app研发录:架构设计、crash分析和竞品技术分析》

Crash处理

Java、Native、Js、Unity、

卡顿ANR

UI -- 绘制、刷新 应用启动--安装启动、冷启动、热启动 页面跳转--页面间跳转、前后台切换 事件响应--按键、系统事件、滑动

内存泄漏&OOM 优化

Heap Snapshot MAT工具

电量优化

消耗机制 优化工具 battery-historian

代码优化

《Effective Java》 《Clean Code》 《重构:改善既有代码的设计》 《整洁代码之道》 阿里巴巴Android开发手册: https://juejin.im/post/5ca42bac51882543f96dc4b7 《[Java程序性能优化-.让你的Java程序更快、更稳定]葛一鸣》

代码混淆 Proguard

反编译、防破解

测试

Junit、Expresso

Git 使用

掘金小册 https://juejin.im/book/5a124b29f265da431d3c472e

抓包调试工具

https://blog.csdn.net/Android_Tutor/article/details/5724435 AndroidCrackTool 2 Stecho Fiddle2 TcpDump + WireShark https://mozillazg.com/2015/05/open-tcpdump-result-with-wireshark-gui.html

About

Android知识体系梳理(移动架构方向)