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 开源 博客
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本)》
*大前端知识体系 【前端自学路线】 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/
极客帮: https://time.geekbang.org/course/intro/105
《Kotlin从零到精通Android开发》
-
C 技术 《C primer plus (第6版)》 百度网盘 -- C语言提高篇 https://blog.csdn.net/HQ354974212/article/details/78189014 《C程序设计新思维(第2版)》
-
C++ 技术栈 -- c++/stl/boost 百度网盘 -- C++ 基础与进阶课 https://pan.baidu.com/s/1AunI0p43lb9QuJwfibLP5Q
【面试问题】 c++什么是构造函数、析构函数虚函数、纯虚函数的作用 c++的特性,什么是多态stl; C++指针和引用的区别
- JNI & NDK 开发
官方文档 -- 向项目添加C/c++代码
https://developer.android.com/studio/projects/add-native-code?utm_source=android-studio https://my.oschina.net/caipeng/blog/2243613 第一个NDK程序 https://blog.csdn.net/young_time/article/details/80346631
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资料包
【学习资源】 掘金 - DevYK 移动架构系列文章 https://juejin.im/user/578259398ac2470061f3a3fb
《 重构,改善既有代码的设计》 《clean code》 《十大开源库-- 视频课》 《 Android源码与设计模式》
- UML 面向对象设计 《Thinking in UML》 UML及starUML工具 https://juejin.im/post/5d2e048cf265da1b9163c7c8
《设计模式之禅》 《大话设计模式》 《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
- kotlin+MVVM+databinding+AOP+dagger2+RxJava+Retrofit PaoNet
- https://juejin.im/post/5c973ac6f265da60f561199f
2)MVP WanmeiHelper ArmsComponent
《Android组件化架构 》 · https://pan.baidu.com/s/1pAVgIbSje74oQ14xb_zBMg
-
ARouter解析 https://blog.csdn.net/fei20121106/article/details/73743235 基于路由框架的Router组件化框架参考开源项目 AcgClub ARouter + MVPArms ArmsComponent
-
基于路由**的美团 -- WMRouter https://tech.meituan.com/meituan_waimai_android_open_source_routing_framework.html
-
极简组件化方案 -- AppJoint AppJoint
-
基于组件总线的CC组件化框架 -- CC
《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
- apk安装过程
- 进程管理、任务管理 、内存管理 【问】 Android中进程内存的分配,能不能自己分配定额内存 https://www.cnblogs.com/ymczxy/p/4710991.html
【问】进程和 Application 的生命周期; 【问】App 是如何沙箱化,为什么要这么做 【问】权限机制 底层的权限是如何进行 grant 的
***【技术专题】 View 绘制 & 高级动画绘制、动画原理 https://blog.csdn.net/lfdfhl/article/details/78566702
- 搞懂view的滑动原理
- 搞懂如何实现弹性滑动
- 搞懂view的滑动冲突
- 搞懂view的measure、layout和draw
-
自定义View过程 -- 实战技能 http://hencoder.com/
-
View绘制原理--系统是如何调用到onMessure,onDraw等方法的 <Android开发艺术探索> https://blog.csdn.net/wangwei708846696/article/details/80539230 https://blog.csdn.net/u012124438/article/details/71435787?utm_source=blogxgwz2
-
View事件分发与滑动冲突 <Android开发艺术探索>
【源码学习】
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卷+(移动开发)》
-
WebView 初始化篇 https://blog.csdn.net/u014044853/article/details/78948405 加载Chromium动态库过程 http://blog.csdn.net/luoshengyang/article/details/53209199
-
WebView 网络请求与页面加载过程
-
WebView 渲染机制
-
WebView&Js 通信原理篇
-
WebView 安全漏洞、性能问题与解决方案 https://blog.csdn.net/carson_ho/article/details/64904635 https://mp.weixin.qq.com/s/-WceVvEKp8bKtIJQsD3Srw
【极客帮】深入拆解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主题换肤框架手写实践
-
Xposed详解 http://blog.csdn.net/Innost/article/details/50461783?utm_source=gank.io%2Fxiandu&utm_medium=website https://www.wrbug.com/
-
基于XPosed 非侵入式AOP框架 -- dexposed https://github.com/alibaba/dexposed
-
安全模式、App 热修复框架、SDK 热修复框架 与 原理 AndFix 、SoPhix、Tinker、Nvwa http://mp.weixin.qq.com/s?__biz=MzIxNzU1Nzk3OQ==&mid=2247487017&idx=1&sn=8abaad1612f871980c042f0fd214975d&chksm=97f6b09da081398b63c2dcd7642b858229ea7c82246af493041ff325c25beb01879bf24d6a0b&mpshare=1&scene=23&srcid=0608yqnuQcXKT2xEhq29c2AN#rd https://juejin.im/post/5ad88a56f265da0b7155ceab 《深入探索Android热修复技术原理7.3Q.pdf》 https://juejin.im/entry/5c7734bbf265da2da53ede61 SDK 热更新方案 https://juejin.im/post/5d299aaae51d45105e021367
-
插件化框架 1) 官方的动态化框架 Android App Bundles
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
并发编程网 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
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
《Java 8实战》
Java 个版本特性与变化 内部类
泛型与泛型擦除
正则表达式
lambda 《精通lambda表达式 Java多核编程》
Java 《注解篇》 基本概念讲解 Java 《注解篇》 运行时注解 Java 《注解篇》 编译时注解 https://pan.baidu.com/s/13xOmB0SaZsrb4pbO8kUU-Q
http://www.xz577.com/j/33988.html
《Java加密与解密的艺术-梁栋》
https://time.geekbang.org/column/article/91427 《计算机组成与设计:软 / 硬件接口》
《现代操作系统(原书第3版) (计算机科学丛书)》
极客时间专题课
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://juejin.im/post/5a69c0ccf265da3e2a0dc9aa
- Gradle 打包插件 Gradle官方教程 https://gradle.org/resources/
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分析和竞品技术分析》
Java、Native、Js、Unity、
UI -- 绘制、刷新 应用启动--安装启动、冷启动、热启动 页面跳转--页面间跳转、前后台切换 事件响应--按键、系统事件、滑动
Heap Snapshot MAT工具
消耗机制 优化工具 battery-historian
《Effective Java》 《Clean Code》 《重构:改善既有代码的设计》 《整洁代码之道》 阿里巴巴Android开发手册: https://juejin.im/post/5ca42bac51882543f96dc4b7 《[Java程序性能优化-.让你的Java程序更快、更稳定]葛一鸣》
Junit、Expresso
掘金小册 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