在Android开发上也做了有些年头了,对Android开关相关的技术有了一定的积累,不敢说有多深,总是一些经验与体会,一个开发人员,在完成工作的同时,应该不断完善自身,这样才能长期保持竞争力。在技术领域,有两个特点,一为更新极快,二为多年不变。都是对的,新技术更新很快,而一些原理,底层技术却是多年不变的。技术人员在积累技术时,要多关注底层原理,而不要把主要经力放在追逐新技术上。所谓万变不离其中,原理是相同的,明白了原理,上手新技术是相多快的。好,进入正文,以下是我自己经验总结的Android从事者所应积累的技术栈方向(因为我自身是做音视频相关,也写有部分音视频的内容):
1.Android源码方向:HAL、IPC、AMS、WMS、ViewRoot、Surface
初级:系统API的使用,四大组件,View特性,Handler使用
中级:自定义View,自定义事件处理,JNI,AIDL,Handler原理
高级:冷启动,插件化组件化,平台架构
资深:系统源码,OAT虚拟机
2.C/C++语法
3.计算机操作系统:Linux
4.代码的编译、链接、运行,虚拟机的编译期与运行期、Java字节码、dex文件格式、oat文件格式、.a、.o、elf文件、.mk文件
5.多媒体技术:录制、播放、编解码、音视频、图片、mp4、H264、amr
初级:系统API特性及使用,图片格式特性
中级:录制编辑等机型适配,FFMPEG,图片压缩原理,SurfaceView特性
高级:开源播放器原理,mp4格式内容,音频编解码原理,H264原理
6.网络协议:TCP、UDP、HTTP、RTSP、HTTPS
初级:HTTP使用,okhttp调用,retrofit使用,RxJava使用
中级:HTTP各版本特性,TCP三次握手,Https原理及抓包原理,okHttp框架原理,Retrofit源码
高级:okHttp各拦截链实现原理,TCP/IP协议原理,Socket特性,流媒体协议,HTTP2.0原理
7.设计模式:代理、命令、Builder、装饰
初级:单例,工厂,Builder,装饰
中级:观察者,命令,生产者消费者,面向接口编程
高级:MVP,复杂架构,EventBus源码
8.算法:红黑树、存储结构--Hash、图论、SHA-256
初级:排序、二手查找,时间复杂度算法,空间复杂度算法,递归
中级:算法归类,减分法,分治法、散列,二叉树遍历,常用数据结构
高级:图遍历,复杂数据结构
资深:加密算法,压缩算法
9.文档:MD文档、UML图
10.构建与版本控制:ant、maven、gradle、svn、git
11.Java:泛型、注解、反射、GC、虚拟机、线程同步、阻塞队列
初级:基本性性,static,final,OOP,异常捕获
中级:泛型,反射,枚举,并发应用,阻塞队列,集合特性
高级:并发原理,虚拟机特性,字节码,ClassLoader,集合实现原理
资深:JVM调优,AOP,IOC,SPI
12.数据库:关系库、SQL、sqlite、GreenDao
初级:建表原则,关系模型,1、n映射
中级:SQL,索引,表联查,GreenDao,ORM
高级:数据库锁,事务,多进程数据库