Android开发传习录之启航篇

386 阅读4分钟

作为Android应用开发者,除了把当前应用做好外,纵向的技术深度与横向的技术广度也要持续研究学习,合纵连横方能立洪流而不倒!任何研发岗位大多数都要求一精多专,常见的招聘需求上"精通..."其实是希望候选人有扎实的技术深度,其次是技术广度,下面列出我自己的研究学习路线

Java

在Android应用中使用的Java技术核心主要是围绕数据结构、多线程并发、设计模式、文件读写、反射注解以及GC垃圾回收和jvm调优,如下图所示

Android应用

Android应用涉及的技术点零散繁杂,需要每一位coder都有自己的知识结构图,除此之外第三方优秀框架源码、组件化、插件化、热修复等动态化工程技术也需要理解掌握,研究学习其中的设计思想,如下图所示

Flutter跨平台

以闲鱼技术团队为代表的Flutter技术应用领跑者目前已经沉淀很多内容,可以在GitHub\闲鱼公号\闲鱼博客之类前去探寻,其它技术团队也都在module或者部分新产品开始尝试接入Flutter,新技术都是在不断实践验证、修复问题的道路上进行完善,Flutter中文网的作者也是实践该技术的大牛,如下图所示Flutter

细节原理还是很繁杂的,需要不断深入理解学习,目前还在探索中...

JNI-NDK

区别于Android SDK基于Java语言,Android中的NDK基于C/C++,我们可以把C++编写的代码通过NDK工具生成对应平台支持的文件,例如在Android中常见引入第三方的.so文件,在图片压缩处理、数据加密、日志记录、音视频流处理等场景下C++的效率要比Java高得多,native层涉及C/C++语法,如下图所示

OpenGL ES

OpenGL ES是跨平台的用于绘制2D/3D图形的接口API,在美颜相机、视频帧处理、图片处理等场景上应用广泛,涉及的专有概念比较多,门槛也相对比较高,如下图所示

音视频应用

Android音视频应用是相对独立的技术领域,目前市面上的短视频、直播等app都会用到相关技术,常见的音视频录制、播放、直播推流拉流等,如下图所示

Apk逆向加固

Android apk的逆向与加固相爱相生,反编译也会用到apktool、dex2jar、jd-gui等工具,逆向、加固需要实战经验与较强的代码跟踪分析能力,一般应用可能是基于代码混淆+NDK加密+三方加固工具以提升反编译难度,如下图所示

需要不断深入理解学习,目前还在探索中...

Android应用架构设计

如果你觉得以上技能剑谱研究的小有所成,那就开始探索Android应用架构设计,学习Linux内核原理,framework层工作原理,研究Google开源的Clean架构、Jetpack系列架构组件,组件化/插件化框架设计,从更高的层面去解决实际问题

算法

数据结构与算法是技能剑谱修炼提升的一大法宝,学习研究常规算法可以去LeetCode、剑指offer、牛客网以及其它博客书籍等,目前还在研究中...

其它Coding相关

Gradle插件设计、技术方案设计、英语学习

贡献开源社区

GitHub发布开源项目,StackOverflow解答疑问,开源项目提交PR、issue等

内容说明

每个人都有自己研究学习的方向与方法,而且在掘金、简书、个人博客上都有无数优秀的文章对以上列出的【技术要点】深度剖析,所以不作细节描述,留给每位读者自行探索,以上列出的受限于个人技术掌握程度还不够全面,可在下方评论区留言以补全【技能剑谱】, 至臻感谢!

博客、开源项目链接

以上技能要点,涉及我的开源项目如下

  1. AudioCapturePlay

    音频录制转码播放

  2. AudioVideoCodec

    音视频录制合成

  3. MannaComponent

    Jetpack系列组件化

  4. OpenGL

    OpenGL ES学习

湖广午王博客文章

OpenGL学习博客