前言

从2010年开始Android市场开始需要大量的Android开发人员,招聘市场上也开始大量招Android开发人员,大量java开发者开始学习Android开发,招聘市场面试要求上只要有一定java语法基础,都很容易应聘上Android开发的岗位,因为那时候国内Android开发的需求刚刚起步,从事Android开发的人员很少,到2011-2012年,只要有一年左右的Android开发经验,那时候在一线城市很容易拿到10K的起步薪资,那时候市场Android开发的市场空缺大概有30万左右。

这时候大量软件培训公司开始大量培训Android开发人员,一时大批开发者或者大学毕业生开始涌向移动开发,当然此时也是移动互联网大势发展的时候,一大批互联网创业公司也开始出现,当时号称只要做个App就可以开始创业了。

到了2016年年底时,市场上Android的招聘需求大量减少,当然这时候有一批相应的创业公司已经衰退,对应培训市场上已经不再把Android开发作为热门核心的培训科目,到现在创业也不用一开始就做一个App就可以开始了,现在越来越讲究精益创业,刚开始推崇最小化可行产品。

现在越来越讲究效益和成本,比如现在只需一个小程序,一个微信公众号,一个视频,一个微信群或者QQ群,甚至只需要经营你的朋友圈就可以开始你的初期创业想法。

当然一些新技术的不断更新与迭代,新技术的层出不穷让我们本身对Android开发水平还没有达到理想状态时已经产生各种焦虑和担忧,比如前段时间快应用的出现,今年小程序的火爆,各种混合开发,跨平台开发已经让我们学习跟不上脚步,就算我们在Android原生开发中也出现各种框架,各种开源库,以及各种大型项目的构建技术和细分领域的技术比如NDK,音视频、逆向技术、图像技术等等已经让我们应接不暇。

以上种种让我们产生了移动Android开发已经凉了,有人有这样的比喻,现在学习加入Android开发,犹如1949年10月加入GMD。确实移动市场没有之前的火爆,但是移动开发真的凉了吗?

AndroidX的前世今生

Android系统在刚刚面世的时候,可能连它的设计者也没有想到它会如此成功,因此也不可能在一开始的时候就将它的API考虑的非常周全。随着Android系统版本不断地迭代更新,每个版本中都会加入很多新的API进去,但是新增的API在老版系统中并不存在,因此这就出现了一个向下兼容的问题。

举个例子,当Android系统发布到3.0版本的时候,突然意识到了平板电脑的重要性,因此为了让Android可以更好地兼容平板,Android团队在3.0系统(API 11)中加入了Fragment功能。但是Fragment的作用并不只局限于平板,以前的老系统中也想使用这个功能该怎么办?于是Android团队推出了一个鼎鼎大名的Android Support Library,用于提供向下兼容的功能。比如我们每个人都熟知的support-v4库,appcompat-v7库都是属于Android Support Library的,这两个库相信任何做过Android开发的人都使用过。

但是可能很多人并没有考虑过support-v4库的名字到底是什么意思,这里跟大家解释一下。4在这里指的是Android API版本号,对应的系统版本是1.6。那么support-v4的意思就是这个库中提供的API会向下兼容到Android 1.6系统。它对应的包名如下:

类似地,appcompat-v7指的是将库中提供的API向下兼容至API 7,也就是Android 2.1系统。它对应的包名如下:

可以发现,Android Support Library中提供的库,它们的包名都是以**android.support.***开头的。

但是慢慢随着时间的推移,什么1.6、2.1系统早就已经被淘汰了,现在Android官方支持的最低系统版本已经是4.0.1,对应的API版本号是15。support-v4、appcompat-v7库也不再支持那么久远的系统了,但是它们的名字却一直保留了下来,虽然它们现在的实际作用已经对不上当初命名的原因了。

那么很明显,Android团队也意识到这种命名已经非常不合适了,于是对这些API的架构进行了一次重新的划分,推出了AndroidX。因此,AndroidX本质上其实就是对Android Support Library进行的一次升级,升级内容主要在于以下两个方面。

第一,包名。之前Android Support Library中的API,它们的包名都是在**android.support.*下面的,而AndroidX库中所有API的包名都变成了在androidx.*下面。这是一个很大的变化,意味着以后凡是android.*包下面的API都是随着Android操作系统发布的,而androidx.***包下面的API都是随着扩展库发布的,这些API基本不会依赖于操作系统的具体版本。

第二,命名规则。吸取了之前命名规则的弊端,AndroidX所有库的命名规则里都不会再包含具体操作系统API的版本号了。比如,像appcompat-v7库,在AndroidX中就变成了appcompat库。

最后

文末放一个小福利给大家,点击我的GitHub即可领取

群内有许多技术大牛,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~

偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!

论啊!

[外链图片转存中…(img-vPHh6H0r-1614682905499)]

ndk开发入门!对Android开发的现状和未来发展的思考,灵魂拷问相关推荐

  1. 安卓应用开发类图!对Android开发的现状和未来发展的思考,附面试题答案

    前言 今天我给大家再次分享一下,我最近的一些读书的感想,思考起来,确实能够给自己带来一些真实的帮助和启发,希望大家在平时的工作学习中,也能够认清楚学习的一些本质. 如果我们的学习是在不断掌握应对具体工 ...

  2. 对Android开发的现状和未来发展的思考,终局之战

    Glide缓存简介 Glide的缓存设计可以说是非常先进的,考虑的场景也很周全.在缓存这一功能上,Glide又将它分成了两个模块,一个是内存缓存,一个是硬盘缓存. 这两个缓存模块的作用各不相同,内存缓 ...

  3. android开发入门配置,Android开发入门——Andoird Studio的安装与配置

    Android的开发离不开Java,仍然需要对Java进行安装与配置,所以我写了上一篇文章,Java的安装与配置. 开始进行Android Studio的安装与配置. 一.进行配置Java,如果电脑里 ...

  4. 对Java开发的现状和未来发展的思考,专题解析

    前言 原来只是在从应用以及简单的思想理解方面给大家介绍了红黑树的创建与使用.这段时间就想要深入研究一下红黑树,主要参考了维基百科内容,加上自己的一些理解与学习,尝试真正的实现这一数据结构.今天小泉就带 ...

  5. [安卓开发笔记一]Android开发配置opencv环境超详细教程

    [安卓开发笔记一]Android开发配置opencv环境超详细教程 [更新于 2022年4月] 再次提醒,建议现在看到这篇文章的,仅仅把此文做一个流程参考,4年前android studio就使用cm ...

  6. Arduino可穿戴开发入门教程Arduino开发环境介绍

    Arduino可穿戴开发入门教程Arduino开发环境介绍 Arduino开发环境介绍 Arduino不像我们使用的PC端操作系统一样,可以直接在操作系统中安装软件为操作系统编程.Arduino的软件 ...

  7. 开发android 输入法,Android输入法开发实例解析 Android开发技术

    Android输入法开发实例解析 Android开发技术 2013 年 4 月 13 日 这里我们建立表1为BiHua,同时构建两个字段,字段1为"input"来存放输入的,字段2 ...

  8. 简析中国智能家居市场现状以及未来发展方向

    标签:利友安防 安智能楼宇 西安智能楼宇 朱顺 15129093445 it  分类:安防技术 简析中国智能家居市场现状以及未来发展方向 摘要:智能家居的概念到底是什么呢?智能家居就是利用计算机技术. ...

  9. 北邮石川教授:「异质信息网络」研究现状及未来发展

    本文转载自:https://www.leiphone.com/news/201801/MpY4WF11OTnFLp7y.html 图片均来源于转载地址 异质信息网络研究现状及未来发展 一.引言 现实生 ...

最新文章

  1. change python是什么意思_回溯是什么意思?
  2. Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory
  3. mysql的ab测试工具_轻量级性能测试工具ab / wrk / locust 分析 对比
  4. FreeNas安装、初始化和存储池设置
  5. junit测试设置不回滚_正确设置JUnit测试名称
  6. javascript设计模式-学习笔记
  7. 使用 Storyboard Segue 实作 UIViewController 的切换 (实例)
  8. SpringBoot整合Redis入门
  9. 做老板必须要有正气和底气,所谓正气就是身正不怕影子斜
  10. 代码测试意味着完全消灭了 Bug?
  11. Windows Azure Cloud Service (24) 在模拟器中运行时跳过Windows Azure Startup任务
  12. Text Classification with BERT using Transformers for long text inputs
  13. html5验证码制作,Html5生成验证码的示例代码
  14. 爬虫小白第一篇 西刺代理
  15. 苹果的文件传输服务器叫我们名字,苹果:即使是我们也无法对设备传输数据解密...
  16. java把图片导出ppt_ppt转图片程序(java实现)
  17. 吉他演奏中的速度与节拍
  18. 修理牧场( 哈夫曼算法 ,贪心 )
  19. web3j错误解决:okhttp3.RequestBody.create(Ljava/lang/String;Lokhttp3/MediaType;)Lokhttp3/RequestBody
  20. 如何解决玩cf(穿越火线)带来的code blocks64位不兼容问题

热门文章

  1. Android通讯录模糊匹配搜索实现(号码 首字母 简拼 全拼)
  2. 基于SAS对美国新冠数据的分析
  3. 二极管的最高工作频率的决定因素是什么?
  4. 怎么在Word中制作表格?简单的Word表格制作方法分享
  5. 什么是webpack?webpack构建工具如何理解?webpack是干什么的?
  6. .NET中开源CMS目录
  7. 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱
  8. R语言学习之数据分析实战(一)
  9. 独家采访 | 苹果首篇AI论文获奖遭质疑,是价值有限还是实至名归?
  10. 最新的虚拟机下载与安装