2020,远征 ● 起航!(目录)

 今天是 “9102” 年最后一天,突然想写点什么,思来想去还是决定写一个简短的“年度小结”吧。实际上,自己在写博文时很少涉及个人或工作方面的内容,那么今天为什么会破例而行之?原因有二。一是阶段性总结。今年把一些技术要点较为系统的撸了一遍,包括Framework层、性能、NDK以及FFmpeg等,为了尽量从原理的角度去掌握这些技术点,期间也读了不少书籍、中英技术文档以及源码,因此在较长一段时间都处于一个“理解-求证-总结”的死循环中 ˙▂˙ 。当然,由于个人精力有限和理解上的偏差,不免会有少许错误,也不会面面俱到,如果发现有不足之处或者错误的地方还请指正。二是立个flag。2020年的学习研究将侧重于AI方向,虽然今年也撸了一下子,但由于缺乏可持续性和系统性,学到的终究是皮毛。so,在2020年自己坚信在这方面会有一个实质性的进展,Anyway,“All in AI” sounds exciting!

1. Android Framework源码

 本部分主要归纳了与日常应用开发密切相关的技术要点它们的Framework层实现原理,包括View绘制原理、View事件分发机制、Window内部工作机制、四大组件的启动过程、Handler消息处理机制、Binder工作机制、多线程实现原理、APP打包启动过程以及Android系统的启动过程,其中Android系统的启动过程又分为Init进程启动过程、Zygote进程启动过程、SystemServer进程和Launcher进程启动过程的分析。由于一些历史原因,部分文章基于Android6.0源码,但是在未来的研究学习中将以Android8.0+源码为主。相关文章如下:

01. 从Android 6.0源码的角度剖析UI界面架构
02. 从Android 6.0源码的角度剖析View的绘制原理
03. 从Android 6.0源码的角度剖析Window内部机制原理
04. 从Android 6.0源码的角度剖析Activity的启动过程
05. 从Android 6.0源码的角度剖析Handler消息机制原理
06. 从Android 6.0源码的角度剖析Binder工作原理
07. 从Android 6.0源码的角度剖析Service启动过程
08. 从Android 6.0源码的角度剖析View的事件分发机制
09. 从Android 8.0源码的角度剖析APK打包、安装过程
10. 从Android 8.0源码的角度剖析Android系统启动过程1
11. 从Android 8.0源码的角度剖析Android系统启动过程2
12. 从Android 8.0源码的角度剖析APP启动过程
13. 从Android 8.0源码的角度剖析多线程原理

2. Android性能优化

 本部分主要研究了Android中相关性能问题产生的原因和优化方案,包括内存泄露优化、UI卡顿优化、APP启动优化、APk瘦身、热修复以及插件化等方面,其中,还学习了Java虚拟机原理、Dalvik/Art虚拟机原理、Android UI渲染机制、类加载机制、注解、反射和Hook等技术。相关文章如下:

Android性能优化(1):常见内存泄漏与优化(一)
Android性能优化(2):常见内存泄漏与优化(二)
Android性能优化(3):常见内存泄漏与优化(三)
Android性能优化(4):UI渲染性能分析与优化
Android性能优化(5):APK瘦身优化
Android性能优化(6):浅析类加载机制与热修复技术
Android性能优化(7):浅析HOOK与插件化技术
Android性能优化(8):APP启动优化
Android性能优化(9):Android 9.0系统APP保活方案探究

3. 多媒体处理(FFmpeg、NDK)

 本部分记录了自己在开发音视频APP过程中用到过的相关技术或技术难点,主要涉及JNI/NDK开发、FFmpeg框架的编译使用以及各种多媒体数据格式的原理分析和它们之间的转换。原始数据格式:YUV(原始图像)、PCM(原始音频);编码压缩格式:H264(视频)、AAC(音频)、G711(A-law)(音频)、JPEG(图片);封装格式:MP3(音频)、MP4(视频);第三方开源库:lame(pcm转mp3)、ijkplayer(音视频播放库)、libjpeg(YUV转JPEG)、OpenSL ES(音频播放库)、SDL(视频渲染库)等;加密算法:RC4、AES、RSA、MD5、Base64。

Android NDK开发之旅(1): Eclipse中NDK环境搭建与JNI开发流程
Android NDK开发之旅(2):Android Studio中使用CMake进行NDK/JNI开发(初级)
Android NDK开发之旅(3): 详解JNI数据类型与C/C++、Java之间的互调
Android NDK开发之旅(4):Android Studio中使用CMake进行NDK/JNI开发(高级)
Android NDK开发之旅(5):JNI函数完全解析与项目实战
Android多媒体技术(一):Camera实时视频采集预览、拍照、JPEG图片方向的处理
Android多媒体技术(二):浅析Camera视频实时采集中涉及的参数配置
Android直播开发之旅(1):视频直播YUV颜色格式完全解析
Android直播开发之旅(2):深度解析H.264编码原理
Android直播开发之旅(3):AAC编码格式分析与MP4文件封装(MediaCodec+MediaMuxer)
Android直播开发之旅(4):MP3编码格式分析与lame库编译封装
Android直播开发之旅(5):详解ffmpeg编译与在Android平台上的移植
Android直播开发之旅(6):详解ffmpeg命令在Android平台上的使用
Android直播开发之旅(7):Android视频直播核心技术(架构)详解
Android直播开发之旅(8):Android硬编解码接口MediaCodec原理剖析
Android直播开发之旅(9):OkCamera,Android 相机应用开发通用库
Android直播开发之旅(10):AndroidUSBCamera,UVCCamera开发通用库
Android直播开发之旅(11):从内存分布的角度再谈YUV颜色空间
Android直播开发之旅(12):初探FFmpeg开源框架
Android直播开发之旅(13):使用FFmpeg+OpenSL ES播放PCM音频
Android直播开发之旅(14):使用RC4算法加解密音视频流
Android直播开发之旅(15):libjpeg库的编译移植与使用
Android直播开发之旅(16):使用FFmpeg保存网络流到本地文件
Android直播开发之旅(17):使用FFmpeg提取MP4中的H264和AAC
Android直播开发之旅(18):FFmpeg中滤镜(Filters)工作原理
Android直播开发之旅(19):FFmpeg中常用滤镜的使用及其原理
Android直播开发之旅(20):使用FFmpeg实现音视频转码
Android直播开发之旅(21):使用FFmpeg+SDL渲染视频
Android直播开发之旅(22):ijkplayer编译移植与使用
Android直播开发之旅(23):ijkplayer框架主流程分析
Android直播开发之旅(25):使用AES算法加密多媒体文件(+RSA+MD5+Base64)

4. OpenCV框架学习

 本部分主要记录了Opencv框架相关知识点,每篇文章都是尽量从原理的角度去介绍,但是由于花的时候不是很多,因此这部分产出不是很多。当然,在未来的一段时间里,应该会重点研究这块。

OpenCV4Android开发实录(1):移植OpenCV3.3.0库到Android Studio
OpenCV4Android开发实录(2): 使用OpenCV3.4.1库实现人脸检测
OpenCV4Android开发实录(3):数字图像基础与OpenCV开发入门
OpenCV4Android开发实录(4):图像去噪与线性滤波(均值、方框、高斯)
OpenCV4Android开发实录(5):图像边缘处理与非线性滤波(中值、双边)
OpenCV4Android开发实录(6):形态学滤波
OpenCV4Android开发实录(7):图像边缘检测
OpenCV4Android开发实录(8):霍夫变换与像素重映射
OpenCV4Android开发实录(9):图像直方图与直方图均衡化
OpenCV4Android开发实录(10):图像轮廓查找与绘制
OpenCV4Android开发实录(11):图像分割与修复

5. 数据结构与算法

数据结构基础知识核心归纳(一)
数据结构基础知识核心归纳(二)
数据结构基础知识核心归纳(三)

6. 第三方框架

 本部分主要研究了在日常开发中用到的一些开源框架的实现原理,包括事件总线框架EventBus、依赖注入框架Butterknife和dragger、图片处理框架glide和picasso、网络框架okhttp和retrofit、性能分析框架LeakCanary和BlockCanary等。由于精力有限,对于一些细节也就没有深究,侧重点在于从源码的角度了解它们的实现原理。相关文章如下:

6.1 数据库ORM

强大的数据库ORM框架-GreenDao项目构建篇(Eclispe平台)
强大的数据库ORM框架-GreenDao项目源码剖析篇
强大的数据库ORM框架-GreenDao增删改查篇

6.2 事件总线

事件总线框架EventBus的使用与原理解析

6.3 依赖注入

依赖注入框架ButterKnife的使用与原理解析
依赖注入框架Dragger的使用与原理解析

6.4 性能分析与优化

内存优化框架LeakCanary的使用与原理解析
UI卡顿优化框架BlockCanary的使用与原理解析

6.5 图片处理

图片处理框架glide的使用与原理解析
图片处理框架picasso的使用与原理解析

6.6 网络处理

网络框架okhttp的使用与原理解析
网络框架retrofit的使用与原理解析

7. 设计模式

1. 当Android遇上设计模式之策略(Strategy)模式
2. 当Android遇上设计模式之建造者(Builder)模式
3. 当Android遇上设计模式之单例(Singleton)模式
4. 当Android遇上设计模式之观察者(Observer)模式
5. 当Android遇上设计模式之代理(Proxy)模式

8. 其他技术点

8.1 Android

Meterial Design最佳体验(1): 使用Toolbar, CoordinatorLayout, AppBarLayout等实现精美标题栏
Material Design最佳体验(2): 使用RecyclerView、CardView、SwipeRefreshLayout实现下拉刷新列表
Material Design最佳体验(3):使用DrawerLayout、NavigationView轻松实现滑动菜单
探讨Android6.0及以上系统APP常驻内存(保活)实现-争宠篇
探讨Android6.0及以上系统APP常驻内存(保活)实现-复活篇
探讨一种新型的双进程守护应用保活
探讨Android 6.0及以上新权限系统的检测与处理
使用Proguard混淆代码打造APP安全第一层防护
浅析Android View内部工作原理及其实战
使用RootTools实现对Android系统文件的读写
LBS AR开发实录(1):手机位姿数据的实时获取
Android USB开发小结:host模式与accessory模式
使用AccessibilityService实现APP的自动安装与卸载
Android动画:帧动画、补间动画详解及实战演练

8.2 python web

Docker入门指南(1):Docker简介与原理

8.3 NLP

中文NLP技术学习(1):搭建NLP开发环境
Rasa Core开发指南

9. 开源项目

AndroidUSBCamera
KeepAPPAlive
OpenCV4Android
FFmpeg4Android
Lame4Mp3
AndroidRecordMp4

10. 我的APP

1. 路痴宝

在这里插入图片描述

2. USB摄像头

密码:12345678
在这里插入图片描述

怀着最美的期待,做别人认为不可能的事,
这一路或许会很艰辛,最后的结果或许会不尽如意,
但是只要努力过,终究会有另一片彩虹!

 这一段话送给2020年的自己,同时也希望能与来到此文的有缘人共勉。

 Hello 2020,元旦快乐!

在这里插入图片描述

发布了83 篇原创文章 · 获赞 293 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/AndrExpert/article/details/103077073
今日推荐