美文网首页
Android技术体系汇总

Android技术体系汇总

作者: Android开发_Hua | 来源:发表于2020-10-21 20:29 被阅读0次

            在平时工作的过程中,不断总结与完善自己的技术体系时,现在初步把android的开发技术体系分为9大技术模块,并大致列表出每个技术模块涉及到的知识点。

    相关知识点汇总:(不断更新)

    模块一:8大硬件模块

    模块二:Android系统模块

    模块三:网络通信模块

    模块四:APK生成模块

    模块五:应用程序构建模块

    模块六:源码分析模块

    模块七:内存模块

    模块八:数据结构与算法模块

    模块九:程序优化模块


    模块一:8大硬件模块

    硬件一:屏幕

    1、沉浸式与SystemUi的设置(systemBarTint开源)

    2、ActionBar与ToolBar

    3、触摸机制(责任链模式,motionEvent类的实现,自定义手势)

    4、绘制原理

    5、9种动画效果

    6、UI与渲染优化

    7、屏幕适配方案、全面屏,曲面屏,刘海屏适配。

    8、自定义ViewGroup与View(自定义控件的分类和实现思路)

    9、ListView与RecyclerView区别(原理,使用,优化)

    10、LinearLayout,RelativeLayout和Constrainlayout的区别与之间的关系

    11、Webview控件详解(通信,内存泄露,安全性,优化,缓存)

    12、Activity,window,View的关系

    13、屏幕适配的演进

    14、Android刷新机制

    15、OpenGl Es

    硬件二:电池

    1、电量检查工具(battery-historian,Energy Profilter)

    2、电量优化的方式

    硬件三:摄像头(待扩展)

    硬件四:CPU

    1、线程的生命周期

    2、Handler机制

    3、分时调度机制与抢占式调度机制

    4、CPU的硬件结构(寄存器,ALU计算元等)

    5、ApplicationThread、ActivityThread、main()函数详解

    6、开启线程的方式有哪些与区别(runnable,future,futureTask,Callable)

    7、线程池详解(创建线程池常用函数,同步线程池,异步线程池,OI密集型,CPU密集型,混合密集型,JDK自带线程池)

    8、AsyncTask的优缺点

    9、CPU执行文件的生成(字节码,机器码,CPU执行指令,指令重排,分配时间片)

    10、Android的7种CPU架构与so文件的适配

    硬件五:内存(后面会涉及)

    硬件六:GPU

    1、GPU的硬件结构

    2、View,SurfaceView,GlSerfaceView的区别(双缓存机制,硬件加速)

    3、硬件加速的原理。(矩阵运算,浮点运算,ALU计算元)

    4、Open GL ES相关知识点详解

    硬件七:内部存储

    1、data/data(Cache,SharePreference,DataBase,File),data/app,dalvik_cache,package文件夹/package.xml文件夹分别存放什么类型数据

    2、SharePreference相关知识点详解(SPUtils,线程安全,读取原理,Commit与Apply,MMKV解决什么问题)

    3、ASimplyCache,DiskLruCache,RxCache的实现(最近最少使用原理,缓存超时的原理)

    4、数据库常见知识点(增,删,查,改,遍历,数据库优化,数据库操作原理,常见开源框架,是否线程安全,是否进程安全)

    5、普通文件操作是否支持多线程操作

    6、Apk分包处理与插件化技术实现

    7、Apk安装完生成oat文件的原理

    硬件八:外部存储

    1、私有目录与公有目录的区别

    2、磁盘缓存的实现

    3、不同版本的系统对外部磁盘操作限制(Android 7.0的存储权限改变,版本适配)

    4、Android中存储常见的类和接口详解(Environment)

    模块二:Android系统模块

    第一层:Linux内核层

    1、Binder驱动(Binder通信的原理,Binder通信的四个角色,Binder通信衍生的问题:Intent传输数据最大值,Binder传输池溢出等)

    2、各种系统驱动

    3、Linux底层用户权限机制

    4、SandBox机制详解

    5、Android的多版本适配与不同版本的特性

    6、Android系统源码分析

    第二层:系统运行库层

    1、JVM的基础知识(类加载器,类加载的过程,垃圾回收器,垃圾回收算法,判断一个对象是否存活,内存结构与内存模型,对象的创建、内存分配、内存寻址,动态分派和静态分派)

    2、DVM的功能详解(DVM虚拟机的运作流程与核心机制,对象的生命周期管理,内存管理,线程调度机制,垃圾回收机制,安全与异常管理)

    3、JVM,DVM,ART虚拟机的区别(垃圾回收机制方面,安装Apk方面,安装文件方面)

    4、JIT与AOT技术的区别

    5、系统的五种进程级别(前端进程,可见进程,服务进程,后端进程,空进程,不同进程的优先级判断)

    6、进程之间的通信(信号,信号量,管道,消息队列,共享内存,socket,binder机制)

    7、死锁(死锁的四个必要条件,死锁的预防,死锁的避免,解除死锁)

    8、拉活与保活实现

    9、进程隔离与内存映射(用户空间,内核空间,内存映射,数据的复制操作)

    10、Android系统中使用的开源C,C++系统项目(相关的so库的使用与引入)

    11、JNI与NDK实现(Native函数,加载so动态库)

    12、Media Service Process系统进程

    13、进程的组成部分(PID,UID,Sandbox)

    14、多进程应用详解(AIDL,Binder,原理,使用场景,优缺点)

    15、Android进程优先级ADJ算法

    16、Native层相关的Crash处理

    17、Navive层相关的内存泄露

    第三层:应用程序框架层

    1、Init进程、zygote进程、serviceManager进程、systemService进程(引导服务,核心服务,其他服务)

    2、AMS系统服务详解

    3、PMS系统服务详解

    4、WMS系统服务详解

    5、IMS系统服务详解(InputManagerService的使用)

    6、Binder进程之间的通信详解

    7、Zygote进程fork进程的原理与共享资源模块

    8、Android包含哪些守护进程和核心系统进程,及他们的作用(LowMemorykiller,ApkInstaller等等)

    第四层:应用程序层

    1、系统应用与普通应用的权限区别

    2、系统内置不可见应用(ApkInstaller)

    3、应用的启动过程详解

    4、应用的安装,更新,卸载详解

    5、Activity的启动原理详解

    模块三:网络通信模块

    1、手机与外界的通信方式(2g,3g,4g,wifi,NFC,蓝牙)

    2、HTTP与HTTPS的区别详解

    3、HTTP的不同版本区别(1.0,1.1,SPDY,2.0,3.0(QUIC))

    4、不同的网络请求框架的区别与使用(Android_sync_httpClient,Volley,okhttp,retrofit)

    5、HttpClient,HttpUrlConnection,Okhttp的区别

    6、网络七层模型相关的协议,通信数据类型,设备等(TCP,UDP,IP协议,ARP,RARP,TTL)

    7、TCP/IP协议族的相关知识点(三次握手,四次挥手,流量控制,拥塞控制)

    8、基于TCP的Socket通信与基于UDP的Socket通信。

    9、DNS服务器作用(域名解析服务器)

    10、NAT网关作用、路由器,交换机,网桥,网关的作用

    11、网络数据类型与处理--文字(json,Xml)

    12、网络数据类型与处理--图片(UIL,Picasso,Glide,fresco原理,区别和使用场景)

    13、网络数据类型与处理--实时音视频流(实时视频播放原理与具体流程,ffmpeg,GYS,jiaoziVideo,播放器控件的实现,软解码与硬解码)

    14、网络数据类型与处理--下载大文件(多线程下载的原理)

    15、Cookie,SessionId,Token区别

    16、IP协议详解(包含各个字段的作用,TTL的作用)

    17、数据指纹,数据签名,数据证书

    18、对称加密算法(RSA),非对称加密算法(AES,DES,3DES,CRC),数据校验算法(MD5,SHA1,SHA256),数据转换算法(Base64)

    19、微服务网关的作用(统一接入,安全防护,流量控制,协议转换)

    模块四:APK生成模块

    1、Android Studio开发工具使用与相关核心功能使用(配置JDK,SDK,NDK,Android studio插件版本,Gradle版本)

    2、Android build文件夹的生成原理

    3、Apk包的生成原理(生成图绘制,AIDL,AAPT,javac,dx,apkbuilder,jarSigner,Ziplige等工具)

    4、Apk包的签名(签名原理与使用脚本,v1,v2和v3签名的区别与改进)

    5、ProGuard与AndResGuard混淆(不混淆的文件集合,混淆的过程,原理与生成文件)

    6、加固原理(加固的原理与作用,常见加固平台,加固可能导致的问题,class.dex与so文件的加固)

    7、多渠道APK的打包原理及配合开源框架实现(美团walle)

    8、Build.gradle的项目配置详解与grovvy语言学习(Gradle相关文件作用,Gradle生命周期,Gradle核心技术详解)

    9、面向切面编程的思想与使用实例(AOP)

    10、面向切面编程三剑客在Android中的使用(APT,AspectJ,JavaAssisit,动态生成代码,动态代理,字节码生成技术)

    11、Android编译时生成代码原理

    12、Git常见指令的使用与Git在Android studio中图形化的使用

    13、一个Android studio点击build生成Apk所做的事情(准备依赖包,合并资源和处理清单,编译,后期处理,包装和发布)

    14、Android studio常用的插件介绍

    15、JDK相关语法深入了解(try,catch,finally语法,静态代码块的执行,常用系统注释,抽象类与接口的区别)

    16、应用程序项目的组成,包含四种配置文件和十种代码文件

    17、Adb常见指令的使用

    18、Gradle常见指令的使用

    19、Charles工具的使用

    20、SwitchHosts工具的使用

    21、AndroidX与support依赖库的区别

    22、Proguard文件相关语法实现(-keep相关语法)

    模块五:应用程序构建模块

    一:项目常见知识点

    1、反射

    2、Crash

    3、ANR

    4、异常

    5、静态代理,动态代理与Hook技术

    6、动态生成代码技术(apt实现)

    二:常见编程思想

    1、命名规范与注解

    2、JAVA与Android阿里开发手册的建议

    3、理解高内聚,低耦合,易复用思想

    4、理解封装,继承,多态思想

    5、熟悉23种设计模块(创建型5种,结构型7种,行为型11种),并能汇总出UML图,理解demo代码,主要解决什么问题及项目中的实例(包含JDK,SDK与开源项目)

    6、理解面向对象的七大设计原则,并在代码中有意识的实现(开闭原则,里式替换原则,接口隔离原则,最少知道原则,单一职责原则,合成聚合原则,依赖导致原则)

    三:四大组件及相关核心类解析

    1、Activity相关知识点详解(生命周期,重要函数理解与使用,配置文件的设置,主要使用场景及功能)

    2、Service相关知识点详解(原理,使用场景,重要函数等等)

    3、BroadcaseReceiver相关知识点详解

    4、ContentProvider相关知识点详解

    5、Application相关知识点详解

    6、Intent知识点详解

    7、Fragment知识点详解

    8、Context知识点详解

    四:Android应用开发的演进

    1、MVC,MVP,MVVM程序架构的演进(解耦,中介者模式,单元测试,优缺点)

    2、模块化(根据功能区分)

    3、插件化(宿主包与插件包,主要主要解决什么技术问题,技术的演进及相关开源项目)

    4、组件化(优缺点,需要解决什么问题,相关开源框架介绍)

    5、多进程(主要解决什么问题,应用场景与实例)

    7、跨平台技术开发模式(优缺点,选择原因,使用场景)

    8、Jetpack与AAC架构详解

    模块六:源码分析模块

    一:JDK与SDK相关源码分析

    1、Handler源码解析

    2、Asynctask源码解析

    3、List与RecyclerView源码解析(原理,使用场景,对比,优化)

    4、LinearLayout,RelativeLayout,ContrainLayout的比较

    5、Binder源码解析

    6、ViewPager与ViewPager2的区别

    二:开源项目分析

    性能检测工具开源项目

    1、LeakCanacary

    2、BlockedCanaery

    程序整体架构设置开源项目

    1、MVPArms

    2、ArmComponent

    3、MvvmHabit

    4、MVVMComponent

    三:项目常见技术开源项目

    1、EventBus的使用与源码分析

    2、ARouter的使用与源码分析

    3、glide的使用与源码分析

    4、RxJava相关开源框架

    5、Retrofit的使用与源码分析

    UI相关的开源项目:(不断更新)

    1、Loadsir

    2、BaseRecyclerViewAdapterHelper

    3、ProgressTimerBar

    4、FlowLayout

    模块七:内存模块

    多线程并发相关

    1、Synchronized(Monitor enter,Monitor exit)

    2、Lock

    3、Atomic

    4、Volatile

    5、threadLocal

    6、常见并发集合(HashTable,Vector,concurrentHashMap,Collections.sync)

    7、Wait,Notify,NotifyAll

    8、Join

    9、Synchronized与Lock的区别

    10、Synchronized与Volatile的区别

    Java内存模式相关

    1、HappenBefore

    2、指令重排(内存的指令重排,JVM虚拟机的指令重排,编译器的指令重排)

    3、As if serial

    4、内存屏蔽

    5、原子性,可见性,有序性

    Java主内存相关:

    1、主内存的分区(新生区,老年区,永久区,伊甸一区,伊甸二区)

    2、四种引用方式及相关引用的作用(强,软,弱,虚)

    3、垃圾回收算法(标记清除算法,标记整理算法,复制算法,分代收集算法)

    4、垃圾回收器

    5、判断一个对象是否存活(引用计数算法,可达性分析算法)

    6、内存模型

    7、内存对象三种属性(原子性、可见性、一致性)

    8、内存泄漏

    9、内存抖动

    10、内存溢出

    11、内存优化手段与场景

    12、Object对象的主要方法有哪些与相关知识点(equal,hashcode,toString,clone,finally,wait,notify,notifyAll)

    13、内存中对象主要存放的数据有哪些与作用(数组,堆,栈,队列树,图,链表,散列表,字符串,二进制)

    14、一个JAVA对象的组成与对象头相关字段的含义(对象头,实例数据,填充区域)

    15、创建对象的方式(new,clone,放射,反序列化)

    16、内存结构(虚拟机栈,本地方法栈,程序计数器,方法区,静态常量池,堆)

    模块八:数据结构与算法模块

    1、Java中的三个常见集合Set,List,Map的主要区别

    2、常见的八种数据结构:数组(ArrayList)、堆(Heap)、栈(stack)、队列(queue)、树(Tree)、图、链表(LinkedList)、散列表(HashMap),它们的使用场景有哪些,使用它的理由

    3、数组相关:

    3.1、无序数组与有序数组的八种排序算法,分别的时间复杂度、空间复杂度和稳定性

    3.2、二分查找的的实现与时间复杂度

    4、堆相关:

    4.1、大顶堆与小顶堆的实现(学校重点班案例)

    4.2、堆的形象图(treeNode)

    4.3、TopK算法的实现(处理海量数据)

    4.4、树的深度优先遍历(前序,中序,后序,递归)

    4.5、树的广度优先遍历(递归实现)

    5、栈相关:

    5.1、堆的pop()、push()、peek()、min()方法的实现

    5.2、堆的形象图

    5.3、堆与链表的组合实现相关功能

    6、队列详解:

    6.1、队列的形象图(queueNode)

    6.2、队列的pop()、push()、peek()的方法实现

    7、树详解:

    7.1、二叉树与多叉树的区别

    7.2、红黑树与平衡二叉树的区别

    7.3、哈夫曼树的作用(最小生成树,做数据压缩)

    7.4、二叉搜索树

    7.5、23树,234树,B,B+树的区别与使用场景

    7.6、树的深度优先遍历(前序,中序,后序,递归)

    7.7、树的广度优先遍历

    8、图详解:

    8.1、无向图

    8.2、有向图

    8.3、权重图

    8.4、最小生成树算法

    9、散列表详解:

    9.1、HashMap的存储结构分析

    9.2、SparseArray与ArrayMap的存储结构与好处

    9.3、LinkedHashMap(lruCache)的作用与好处

    9.4、HashTable的作用与好处

    9.5、ConcurrentHashMap的作用与好处(锁分段技术)

    9.6、Collection.synchronized()做线程同步

    9.7、treeMap的作用与好处

    10、相关学习网址与书籍

    10.1、剑指offer

    10.2、编程之美

    10.3、编程珠玑

    10.4、牛客网

    10.5、leetcode

    11、算法相关的小知识点汇总

    12、常见算法相关概念

    12.1、递归

    12.1、动态规划

    12.1、回溯算法

    12.1、斐波那契数列

    12.1、约瑟夫环

    12.1、贪婪算法

    12.1、分治法

    模块九:程序优化模块

    1、UI与界面渲染方面检测工具与优化

    2、界面流畅性与卡顿方面的检测工具与优化

    3、手机电量的检测工具与优化

    4、CPU与代码执行效率的检测工具与优化

    5、内存相关的检测工具与优化

    6、Apk包体大小(apk瘦身)检测工具与优化

    7、应用启动速度的检测工具与优化

    8、网络通信相关的检测工具与优化

    9、程序优化的三部曲:

    步骤一:使用优化相关的检查工具,并能看懂相关的输出信息(logcat,图形等输出信息)。

    步骤二:通过分析检查工具的输出信息,找出相关性能问题。

    步骤三:针对相关的性能问题,对症下药,解决问题。

    相关文章

      网友评论

          本文标题:Android技术体系汇总

          本文链接:https://www.haomeiwen.com/subject/oqoemktx.html