Skip to content

henrymorgen/android-knowledge-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 

Repository files navigation

Android最强原创知识体系

为了方便大家的阅读以及自己的知识体系的建立,特意来写出这个引导文章。以前我是遇到什么写什么,想到什么写什么,从2016年开始我将围绕这个知识体系来写文章,从点到面来逐步建立并完善自己的知识体系。对于Android应用开发知识体系的建立,我这里貌似是最早的,后面有很多人开始模仿,也算是带了个好头。

我这个知识体系和其他的知识体系不同的是所有的分支文章都是我原创写出来的,所以文章的风格会比较统一,文章之间的过度和衔接也比较自然。

很多人都有一个误区,就是喜欢搞个思维导图,思维导图本身并没有问题,但是弄个思维导图,然后每个分支总结下,或者找几篇文章看看甚至看都不看就列在分支下面,然后看着思维导图有了满满的成就感,以为自己掌握了,其实只是知道而已,真正的掌握是去实现每个例子,去跟踪每段源码... 然后经过思考用自己的话写出来,未经自己思考的知识不是知识。而本体系就是告诉你,应该如何做,才会把知识变为你自己的。


BATcoder技术视频(基于Android 11.0)

一个视频帮你突破系统底层学习瓶颈!

是时候安装Ubuntu,开始研究系统源码了!

是时候下载Android11系统源码和内核源码了!

做了多年安卓还没编译过源码?一个视频带你玩转!

1.Android框架层

Android系统架构与系统源码目录

AOSP基础(基于Android 9.0)

Android AOSP基础(一)VirtualBox 安装 Ubuntu
Android AOSP基础(二)AOSP源码和内核源码下载
Android AOSP基础(三)Android系统源码的整编和单编
Android AOSP基础(四)Source Insight和Android Studio导入系统源码
Android AOSP基础(五)Android Studio调试系统源码的三种方式

系统启动流程(基于Android 7.0)

Android系统启动流程(一)解析init进程启动过程
Android系统启动流程(二)解析Zygote进程启动过程
Android系统启动流程(三)解析SyetemServer进程启动过程
Android系统启动流程(四)Launcher启动过程与系统启动流程

应用程序进程启动过程(基于Android 7.0)

Android应用程序进程启动过程(前篇)
Android应用程序进程启动过程(后篇)

深入理解四大组件(基于Android 7.0/8.0)

Android深入四大组件(一)应用程序启动过程
Android深入四大组件(二)Service的启动过程
Android深入四大组件(三)Service的绑定过程
Android深入四大组件(四)广播的注册、发送和接收过程
Android深入四大组件(五)Content Provider的启动过程
Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)
Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)
更多见《Android进阶解密》

Binder原理(基于Android 9.0)

Android Binder原理(一)学习Binder前必须要了解的知识点
Android Binder原理(二)ServiceManager中的Binder机制
Android Binder原理(三)系统服务的注册过程
Android Binder原理(四)ServiceManager的启动过程
Android Binder原理(五)系统服务的获取过程
Android Binder原理(六)Java Binder的初始化

深入理解Context(基于Android 7.0)

Android深入理解Context(一)Context关联类和Application Context创建过程
Android深入理解Context(二)Activity和Service的Context创建过程

深入理解JNI(基于Android 7.1.2)

Android深入理解JNI(一)JNI原理与静态、动态注册
Android深入理解JNI(二)类型转换、方法签名和JNIEnv

解析AMS(基于Android 7.1.2)

Android解析ActivityManagerService(一)AMS启动流程和AMS家族
Android解析ActivityManagerService(二)ActivityTask和Activity栈管理 更多见《Android进阶解密》

解析WindowManager(基于Android 7.1.2)

Android解析WindowManager(一)WindowManager体系
Android解析WindowManager(二)Window的属性
Android解析WindowManager(三)Window的添加过程

解析WMS完结(基于Android 8.0)

Android解析WindowManagerService(一)WMS的诞生
Android解析WindowManagerService(二)WMS的重要成员和Window的添加过程 Android解析WindowManagerService(三)Window的删除过程

包管理机制(基于Android 8.0)

Android包管理机制(一)PackageInstaller的初始化
Android包管理机制(二)PackageInstaller安装APK
Android包管理机制(三)PMS处理APK的安装
Android包管理机制(四)PMS的创建过程
Android包管理机制(五)APK是如何被解析的

输入系统(基于Android 8.1)

Android输入系统(一)输入事件传递流程和InputManagerService的诞生
Android输入系统(二)IMS的启动过程和输入事件的处理
Android输入系统(三)InputReader的加工类型和InputDispatcher的分发过程
Android输入系统(四)输入事件是如何分发到目标窗口的?

Android多媒体框架(基于Android 2.3)

MediaPlayer框架概述(一)
MediaPlayer框架概述(二)
Android mediaRecorder框架简述(一)
Android mediaRecorder框架简述(二)
Android MediaPlayer+Stagefright框架(音频)图解
Stagefright框架解读(—)音视频Playback流程


2.Android应用层

Gradle核心思想

Gradle核心思想(一)为什么现在要用Gradle?
Gradle核心思想(二)Gradle入门前奏
Gradle核心思想(三)Groovy快速入门指南
Gradle核心思想(四)看似无用,实则重要的Gradle Wrapper
Gradle核心思想(五)通俗易懂的Gradle插件讲解
Gradle核心思想(六)自定义Gradle插件的三种方式

Android Gradle插件

Android Gradle (一)Gradle的Android插件入门
Android Gradle (二)签名配置和依赖管理

Android Jetpack架构组件

Android Jetpack架构组件(一)带你了解Android Jetpack
Android Jetpack架构组件(二)带你了解Lifecycle(使用篇)
Android Jetpack架构组件(三)带你了解Lifecycle(原理篇)
Android Jetpack架构组件(四)带你了解LiveData(使用篇)
Android Jetpack架构组件(五)带你了解LiveData(原理篇)
Android Jetpack架构组件(六)一文带你了解ViewModel的使用和原理

解析ClassLoader

Android解析ClassLoader(一)Java中的ClassLoader
Android解析ClassLoader(二)Android中的ClassLoader

网络编程

Android网络编程(一)HTTP协议原理
Android网络编程(二)HttpClient与HttpURLConnection
Android网络编程(三)Volley用法全解析
Android网络编程(四)从源码解析volley
Android网络编程(五)OkHttp2.x用法全解析
Android网络编程(六)OkHttp3用法全解析
Android网络编程(七)源码解析OkHttp前篇[请求网络]
Android网络编程(八)源码解析OkHttp后篇[复用连接池]
Android网络编程(九)Retrofit2前篇[基本使用]
Android网络编程(十)Retrofit2后篇[注解]
Android网络编程(十一)源码解析Retrofit

View体系

Android View体系(一)视图坐标系
Android View体系(二)实现View滑动的六种方法
Android View体系(三)属性动画
Android View体系(四)从源码解析Scroller
Android View体系(五)从源码解析View的事件分发机制
Android View体系(六)从源码解析Activity的构成
Android View体系(七)从源码解析View的measure流程
Android View体系(八)从源码解析View的layout和draw流程
Android View体系(九)自定义View
Android View体系(十)自定义组合控件
Android View体系(十一)自定义ViewGroup

IPC机制

Android IPC机制(一)开启多进程
Android IPC机制(二)用Messenger进行进程间通信
Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用
Android IPC机制(四)用ContentProvider进行进程间通信
Android IPC机制(五)用Socket实现跨进程聊天程序

Design Support Library

Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
Android Design Support Library(二)用NavigationView实现抽屉菜单界面
Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
更多内容见《Android进阶之光》

Android新特性

Android5.x RecyclerView 应用解析
Android5.x CardView 应用解析 Android5.x Notification应用解析
Android5.x Toolbar和Palette应用解析

更多内容见《Android进阶之光》

Android性能优化

Android绘制优化(一)绘制性能分析
Android绘制优化(二)布局优化

Android内存优化(一)DVM和ART原理初探
Android内存优化(二)DVM和ART的GC日志分析
Android内存优化(三)避免可控的内存泄漏
Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump
Android内存优化(五)详解内存分析工具MAT
Android内存优化(六)LeakCanary使用详解

Android架构

Android架构(一)MVP全解析

更多内容见《Android进阶之光》

Android响应式编程

Android响应式编程(一)RxJava前篇[入门基础]

更多内容见《Android进阶之光》

Android事件总线

Android事件总线(一)EventBus3.0用法全解析
Android事件总线(二)EventBus3.0源码解析
Android事件总线(三)otto用法全解析
Android事件总线(四)源码解析otto

热修复插件化原理

Android热修复原理(一)热修复框架对比和代码修复
Android插件化原理(一)Activity插件化
更多见《Android进阶解密》

Android多线程

Android多线程(一)线程池
Android多线程(二)AsyncTask源码分析
Android多线程(三)AsyncTask源码分析(android7.0)

Android 界面编程

Android 实现广告Banner循环轮播
Android选项卡动态滑动效果
ActionBar-PullToRefresh的使用

Android面试总结加强版

Android面试题总结加强版(一)
Android面试题总结加强版(二)
Android面试题总结加强版(三)
Android面试题总结加强版(四)


3.Flutter

Flutter基础

Flutter基础(一)移动开发的跨平台技术演进
Flutter基础(二)Flutter开发环境搭建和Hello World
Flutter基础(三)Dart快速入门
Flutter基础(四)开发Flutter应用前需要掌握的Basic Widget
Flutter基础(五)Material组件之MaterialApp、Scaffold、AppBar
Flutter基础(六)Material组件之BottomNavigationBar、TabBar、Drawer
Flutter基础(七)Scrolling Widget之ListView、GridView、PageView
Flutter基础(八)手势相关Widget:GestureDetector和Dismissible
Flutter基础(九)资源和图片
Flutter基础(十)布局Widget快速入门
Flutter基础(十一)网络请求(Dio)与JSON数据解析
Flutter基础(十二)路由(页面跳转)与数据传递
Flutter基础(十三)Flutter与Android的相互通信


4.Java

Java并发编程

Java并发编程(一)线程定义、状态和属性
Java并发编程(二)同步
Java并发编程(三)volatile域
Java并发编程(四)Java内存模型
Java并发编程(五)ConcurrentHashMap的实现原理和源码分析
Java并发编程(六)阻塞队列
Java并发编程(七)ConcurrentLinkedQueue的实现原理和源码分析

Java虚拟机

Java虚拟机(一)结构原理与运行时数据区域
Java虚拟机(二)对象的创建与OOP-Klass模型
Java虚拟机(三)垃圾标记算法与Java对象的生命周期
Java虚拟机(四)垃圾收集算法


5.设计模式

设计模式(一)设计六大原则
创建型模式
设计模式(二)单例模式的七种写法
设计模式(三)建造者模式
设计模式(四)简单工厂模式
设计模式(十)工厂方法模式
设计模式(十三)抽象工厂模式
设计模式(十六)原型模式

结构型模式 (从程序的结构上解决模块之间的耦合问题)
设计模式(六)代理模式
设计模式(七)装饰模式
设计模式(八)外观模式
设计模式(十二)享元模式

行为型模式 (处理类或对象如何交互及如何分配职责)
设计模式(五)观察者模式
设计模式(九)模版方法模式
设计模式(十一)策略模式
设计模式(十四)中介者模式
设计模式(十五)状态模式


6.React Native

React Native探索
React Native探索(一)环境搭建与Hello World
React Native探索(二)Atom+Nuclide安装、配置与调试
React Native探索(三)组件的Props(属性)和State(状态)
React Native探索(四)Flexbox布局详解
React Native探索(五)使用fetch进行网络请求
React Native组件
React Native组件(一)组件的生命周期
React Native组件(二)View组件解析
React Native组件(三)Text组件解析


7.算法

算法(一)时间复杂度
算法(二)初等排序前篇[插入和希尔排序]
算法(三)初等排序后篇[选择和冒泡排序]


8.Swift

Swift快速入门(一)第一个Swift程序
Swift快速入门(二)基本数据类型
Swift快速入门(三)运算符
Swift快速入门(四)流程控制
Swift快速入门(五)集合


这里不仅分享大前端、Android、Java等技术,还有程序员成长类文章。

About

Android应用开发最强原创知识体系

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published