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项目 安装 ...
随机推荐
- 【JavaScript】前端算法题 40道题+解析
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习 题目 题目一: 二维数组中的查找: 在 ...
- 解决GitHub不显示图片问题——GitHub图片显示失败
在Github上打不开图片是一个极为常见的事情,出现这样的问题的原因就是我们的主机无法正确解析图片所在主机域名对应的IP地址,下面给出一个在本地主机(window10)上使用ping命令解析目标主机域 ...
- ABC304Ex Constrained Topological Sort 题解
https://atcoder.jp/contests/abc304/tasks/abc304_h [CSP-S 2023] 种树后半部分的加强版 对于边 \((u,v)\),不妨令 $r[u]$ 对 ...
- Linux命令lsscsi详解
@ 目录 一.什么是scsi 二.常见硬盘接口 1. IDE接口的硬盘 2. SCSI接口硬盘 3. SATA接口类型 三. lsscsi命令 1. lsscsi 命令安装 2. lsscsi命令英文 ...
- CF650D Zip-line
CF650D Zip-line 大概题面: 给定一个长度为 \(n\) 的序列以及\(m\)个操作,每个操作形如" \(a_i,b_i\) ",表示将序列中第 \(a_i\) 个数 ...
- C# 获取PDF页面大小、方向、旋转角度
在处理PDF文件时,了解页面的大小.方向和旋转角度等信息对于PDF的显示.打印和布局设计至关重要.本文将介绍如何使用免费.NET 库通过C#来读取PDF页面的这些属性. C# 读取PDF页面大小(宽度 ...
- 安卓系统使用chrome插件(以yandex安装油猴为例)
以tampermonkey为代表的Chrome插件广受好评,但由于Chrome在安卓系统并不支持令人遗憾.所以带来安卓手机使用Chrome插件的教程. 一,首先下载安卓开源浏览器(个人推荐yandex ...
- .net7(.net core) 依赖注入:从 AddSingleton 注册的类里面访问 AddScoped 的问题
记录一下以免忘记. 今天从NopCommerce开源项目里面把它的任务调度类拆出来到我的项目用的时候,发现报错,报错信息如下 Some services are not able to be cons ...
- 痞子衡嵌入式:在MDK开发环境下自定义安装与切换不同编译器版本的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在MDK开发环境下自定义安装与切换不同编译器版本的方法. Keil MDK 想必是嵌入式开发者最熟悉的工具之一了,自 2005 年 Ar ...
- OData – 大杂烩
前言 本篇记入一些 OData 的小东西. Query string too long OData 使用 GET 请求,然后搭配 query string $filter, $select, $exp ...