FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
喊了多年的互联网寒冬,今年的寒风格外凛冽,还在坚守安卓开发的朋友着实不容易。因为能转行的早就转了,能转岗的也早就转了,那么安卓程序员比较迷茫的就是,我该学什么安卓技术才好呢?还是直接扔了安卓再去搞别的技术吗?
下面探讨下安卓程序员还能在哪些方面进阶修炼,主要有以下三个方向。
一、纵向钻研谷歌爸爸推出的最新技术
谷歌就是安卓的爹,只要谷歌不倒,安卓开发就不会倒。今年的谷歌开发者大会都放到北京举办了,可见爸爸真的非常疼咱们爱咱们。
爸爸每段时间就推出新款Android的预览版、测试版和稳定版,各种新特性就像挤牙膏似的总也挤不完,咱们就慢慢吮吸总也吸不完。
爸爸每段时间就推出新款Android Studio的Alpha版、Beta版、Canary版,然后还有Release版,这些ABC加上R版本,如此顺口方便咱们细嚼慢咽。
爸爸推出了Kotlin语言,谁让当年采用Java语言的爸爸吃了官司呢?既然爸爸吃了Java官司,那么咱们赶紧把Kotlin囫囵吞下去。
爸爸推出了Flutter跨平台框架,即使爸爸裁了FuchsiaOS团队,裁了Python团队,连Go团队的技术负责人都一脚踢飞,但仍然保留着Flutter和Dart团队,所以咱们要放下顾虑,继续无脑向Flutter冲呀。
爸爸推出了Jetpack和Compose套件,这些年来Jetpack和Compose不断推陈出新,可见爸爸唯恐咱们饿了没东西啃,所以咱们年年啃月月啃。
该方向的学习难度系数为★★★,保饭碗指数为★★。理由:爸爸的App开发技术都是公开的,而且简单易学门槛低。
嗯,学习Jetpack套件与最新的Android开发推荐这本书《Android Studio开发实战:从零基础到App上线(第3版)》,该书基于Android12和Android Studio Dolphin,介绍了包含DataStore、Room、RecyclerView、ViewPager2、WorkManager、Glide、CameraX、ExoPlayer等等在内的Jetpack套件。
二、横向拓展安卓开发的新功能新应用
除了谷歌爸爸推出的组件库,还有其他专业领域的第三方库,能够实现与众不同的新功能。
比如初级安卓只会调用HTTP的POST接口,但是物联网方面更需要Socket通信与蓝牙通信,那么SocketIO、WebSocket、Bluetooth LE就是必须掌握的。具体参见《Android Studio开发实战:从零基础到App上线(第3版)》一书的“13.4 即时通信”和“17.3 低功耗蓝牙”。
又如初级安卓只会使用画布Canvas和画笔Paint作图,但是AI视觉方面更需要三维制图和动态追踪,那么OpenGL、OpenGL ES、OpenCV就是必须掌握的。具体参见《Android App开发进阶与项目实战》一书的“5.1 OpenGL”、“5.2 OpenGL ES”和“12.2 基于计算机视觉的人脸识别”。
再如初级安卓只会通过VideoView和ExoPlayer播放视频,但是音视频方面更需要实时交互和动态剪辑,那么WebRTC、FFmpeg、RTMP/SRT(直播协议)就是必须掌握的。其中WebRTC的App开发参见《Android Studio开发实战:从零基础到App上线(第3版)》一书的“20.2 给App集成WebRTC”,FFmpeg的App开发参见《FFmpeg开发实战:从零基础到短视频上线》一书的“第12章 FFmpeg的移动开发”,手机App的直播技术参见之前的文章《利用RTMP协议构建电脑与手机的直播Demo》和《利用SRT协议构建手机APP的直播Demo》。
该方向的学习难度系数为★★★★,保饭碗指数为★★★。理由:以上技能涉及计算机科学的专业领域知识,具备一定的技术门槛。
嗯,学习音视频和FFmpeg编程技术推荐这本书《FFmpeg开发实战:从零基础到短视频上线》,该书详细介绍了如何在Windows系统和Linux系统分别搭建FFmpeg的开发环境,第12章还介绍了如何通过Android Studio+FFmpeg开发手机App。
三、打开思路迈向Android+N的新天地
除了常见的App应用开发之外,安卓与其他行业结合还能产生更多的就业岗位。
比如Android+汽车行业就产生了车机开发,那要学习车载系统Automotive OS,以及外景系统EVS、娱乐系统IVI等等。其中Automotive OS是谷歌爸爸基于AOSP开发的,目前已经迭代到了Automotive OS 14。
又如Android+游戏行业就产生了手游开发,那要学习Unity3D、Cocos2d-x、Unreal4、CryEngine3等游戏引擎。其中Unity3D是国外研发的历史悠久游戏引擎,而Cocos2d-x是国产的后起之秀游戏引擎。
再如Android+安全行业就产生了网安开发,那要学习逆向工具Frida、系统框架工具LSPosed、全局注入管理工具RxPosed、脱抽取壳工具dumpDex、自定义APK模块加载器HideApk,以及逆向观测技术jvmti、Native层观测技术gdbinjec等等.
该方向的学习难度系数为★★★★★,保饭碗指数为★★★★。理由:以上属于细分行业的专门技能,独特的行业经验拥有高门槛。
嗯,学习Android原生App的安全和逆向技术推荐这本书《Frida Android SO逆向深入实践》,该书详细介绍了如何使用Frida揭示原生App的逆向、分析和破解之奥秘,还探讨了ARM/ELF的文件格式和反编译工具IDA。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势的更多相关文章
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- 树莓派开发笔记(十五):树莓派4B+从源码编译安装mysql数据库
前言 树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mysql服务,通过读写锁事务等使用,可以实现多进 ...
- .Net开发笔记(十五) 基于“泵”的TCP通讯(接上篇)
上一篇博客中说了基于“泵”的UDP通讯,附上了一个Demo,模拟飞鸽传书的功能,功能不太完善,主要是为了说明“泵”在编程中的应用.本篇文章我再附上一个关于TCP通讯的两个Demo,也都采用了“泵”模式 ...
- Java开发笔记(十五)短路逻辑运算的优势
前面提到逻辑运算只能操作布尔变量,这其实是不严谨的,因为经过Java编程实现,会发现“&”.“|”.“^”这几个逻辑符号竟然可以对数字进行运算.譬如下面的代码就直接对数字分别开展了“与”.“或 ...
- Hi3516开发笔记(十):Qt从VPSS中获取通道图像数据存储为jpg文件
前言 上一篇已经将himpp套入qt的基础上进行开发.那么qt中拿到frame则是很关键的交互,这是qt与海思可能编解码交叉开发的关键步骤. 受限制 因为直接配置sample的vi比较麻烦 ...
- FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 提高你开发效率的十五个Visual Studio 2010使用技巧
提高你开发效率的十五个Visual Studio 2010使用技巧 相信做开发的没有不重视效率的.开发C#,VB的都知道,我们很依赖VS,或者说,我们很感谢VS.能够对一个IDE产生依赖,说明这个ID ...
- VSTO学习笔记(十五)Office 2013 初体验
原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
随机推荐
- 【Java】Socket Programming 网络编程
Java提供了网路相关的类库,无痛连网,底层细节交给JVM控制 Java实现了一个跨平台的网络库,我们开发面对的是一个统一的网路编程环境 目的: 直接或者间接的通过网络协议和其他计算机数据交互,通讯 ...
- 【SpringMVC】09 对JSON的应用
前面JavaWeb的JSON回顾: https://www.cnblogs.com/mindzone/p/12820877.html 上面的这个帖子我都还没有实际写进Servlet使用,要Mark一下 ...
- 【Vue】Re09 Webpack 第一部分(介绍、安装、配置)
一.Webpack的用途 webpack要解决的是统一网页资源的问题 前端工程化出现了很多问题,就是兼容性,浏览器所不能解析 所以需要一个打包,转换等方式处理 二.安装描述介绍 下载安装NodeJS, ...
- 【ECharts】04 数据交互
ECharts 异步加载数据 ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项 ...
- jmeter 使用非 GUI 模式运行测试脚本
使用非 GUI 模式运行测试脚本时可以使用的一些命令:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> ...
- ubuntu18.04server系统(cuda11.1)环境下进行mindspore_gpu_1.5版本源码编译
注意: 经过多次尝试发现mindspore_gpu的源码编译必须有sudo权限,否则就会报错. 软硬件环境: 操作系统:Ubuntu18.04.6 (全新系统) CPU:i7 9700k GPU: ...
- (持续更新)国内计算机领域相关的SCI和EI期刊,以及好中的SCI和EI期刊(不限国内外)
好中的: SCI刊: EI刊: EI会议: 参考: CCF发布计算领域高质量科技期刊分级目录 国内的: SCI-Expanded 1. <Journal of Computer Scie ...
- java多线程之自定义线程池
1.背景 线程池.....大家常用.... 自己搞一个,顺便练习一下多线程编程 2.自定义线程代码 2.1.拒绝策略接口 @FunctionalInterface public interface M ...
- 使用map方法递归替换组数对象内的某一个值
const TreeDataSource = (arr) => { // 判断是否是数组 if (!arr || !arr.length > 0) { return } // 将值存入ma ...
- 是技术牛人,如何拿到国内IT巨头的Offer
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...