Kotlin-Android开发简介

  • Android简介
  • Android历程
  • Android系统架构
    • 应用层
    • 框架层
    • 系统运行库
    • 硬件抽像层
    • 系统内核层
    • Android优势
      • 开放性
      • 丰富的硬件
      • 方便开发
      • Google应用
  • 展望

Android简介

安卓是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

Android历程

2003年10月,Andy Rubin等人创建Android公司,并组建Android团队。

2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。安迪鲁宾成为Google公司工程部副总裁,继续负责Android项目。

2007年11月5日,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成,并与84家硬件制造商、软件开发商及电信营运商组成开放手持设备联盟(Open Handset Alliance)来共同研发改良Android系统,这一联盟将支持谷歌发布的手机操作系统以及应用软件,Google以Apache免费开源许可证的授权方式,发布了Android的源代码。

2008年,在GoogleI/O大会上,谷歌提出了AndroidHAL架构图,在同年8月18号,Android获得了美国联邦通信委员会(FCC)的批准,在2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。

2009年4月,谷歌正式推出了Android 1.5这款手机,从Android 1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,Android 1.5命名为Cupcake(纸杯蛋糕)。该系统与Android 1.0相比有了很大的改进。

2009年9月,谷歌发布了Android 1.6的正式版,并且推出了搭载Android 1.6正式版的手机HTC Hero(G3),凭借着出色的外观设计以及全新的Android 1.6操作系统,HTC Hero(G3)成为当时全球最受欢迎的手机。Android 1.6也有一个有趣的甜品名称,它被称为Donut(甜甜圈)。

2010年2月,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”(“staging tree”)上除去,从此,Android与Linux开发主流将分道扬镳。在同年5月份,谷歌正式发布了Android 2.2操作系统。谷歌将Android 2.2操作系统命名为Froyo,翻译完名为冻酸奶。

2010年10月,谷歌宣布Android系统达到了第一个里程碑,即电子市场上获得官方数字认证的Android应用数量已经达到了10万个,Android系统的应用增长非常迅速。在2010年12月,谷歌正式发布了Android 2.3操作系统Gingerbread (姜饼)。

2011年1月,谷歌称每日的Android设备新用户数量达到了30万部,到2011年7月,这个数字增长到55万部,而Android系统设备的用户总数达到了1.35亿,Android系统已经成为智能手机领域占有量最高的系统。

2011年8月2日,Android手机已占据全球智能机市场48%的份额,并在亚太地区市场占据统治地位,终结了Symbian(塞班系统)的霸主地位,跃居全球第一。

2011年10月19日上午十点,谷歌与三星联手在中国香港举办发布会,公布有关Android 4.0系统信息。

2013年11月1日,Android4.4正式发布,从具体功能上讲,Android4.4提供了各种实用小功能,新的Android系统更智能,添加更多的Emoji表情图案,UI的改进也更现代,如全新的HelloiOS7半透明效果。

2014年6月26日发布Android 5.0 ,系统使用一种新的Material Design设计风格。对 Android 系统的桌面图标及部件的透明度进行的稍稍的调整,并且各种桌面小部件也可以重叠摆放。虽然调整桌面部件透明度对 Android 系统来说并不算什么新鲜的功能,但是加入了透明度的改进。界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。采用这种设计的目的在于统一 Android 设备的外观和使用体验,不论是手机、平板还是多媒体播放器。

2015年9月30日发布Android 6.0Marshmallow(棉花糖),新系统的整体设计风格依然保持扁平化的Material Design风格。Android6.0在对软件体验与运行性能上进行了大幅度的优化。据测试,Android6.0可使设备续航时间提升30%。

2015年,网络安全公司Zimperium研究人员警告,安卓(Android)存在“致命”安全漏洞,黑客发送一封彩信便能在用户毫不知情的情况下完全控制手机。

2016年8月22日 发布Android 7.0, 提供新功能以提升性能、生产效率和安全性。通过新的系统行为测试您的应用,以节省电量和内存。充分利用多窗口 UI、直接回复通知等功能。

2017年8月22日发布Android 8.0 (奥利奥),增加新功能:画中画、通知圆点、通知渠道、自动填充框架、自动调整TextView的大小、可下载字体、自适应图标、快捷方式固定、广色域色彩 WebView 功能。

2018年5月9日发布Android 9.0 Pie,通知栏样式更改,整体设计添加了更多圆形。Android 9 利用人工智能技术,让手机可以为您提供更多帮助。现在,手机变得更智能、更快,并且还可以随着您的使用进行调整。

2018年10月,谷歌表示,将于2018年12月6日停止Android系统中的Nearby Notifications(附近通知)服务,因为Android用户收到太多的附近商家推销信息的垃圾邮件。

2019年发布Android Q正式名称是Android 10,Google 开始提供系统级的黑暗模式,大部分预装应用、抽屉、设置菜单和 Google Feed 资讯流等界面和按钮,都会变成以黑色为主色调,就和你在 macOS Mojave 中看到的暗色界面一样。为确保用户隐私和安全支持新的保护措施。借助高性能编解码器、更出色的生物识别技术、更快的应用启动速度、Vulkan 1.1、NNAPI 1.2、可折叠设备和 5G 等更多功能扩展!谷歌宣布Android系统的重大改变,不仅换了全新的logo,命名方式也变了。

由于疫情原因,谷歌宣布取消线下的开发者大会,后来又取消了线上开发者大会,所以Android 11 将在2020年第三季度发布。

Android系统架构

Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,Android 分为五个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层、硬件抽象层和Linux内核层。

应用层

Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。

框架层

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括:

  • 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
  • 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
  • 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
  • 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
  • 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

系统运行库

Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:

  • 系统 C 库 - 一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。
  • 媒体库 - 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
  • Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
  • LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。

硬件抽像层

Android 的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开,让 Android 不至过度依赖 Linux kernel,以达成 Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。

HAL stub 是一种代理人(Proxy)的概念,Stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数(Operations),并由 Android runtime 向 HAL 取得 Stub 的Operations,再 Callback 这些操作函数。HAL 里包含了许多的 Stub(代理人)。Runtime 只要说明“类型”,即 Module ID,就可以取得操作函数。

系统内核层

Android 是运行于Linux kernel之上,但并不是GNU/Linux。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。

Android优势

开放性

在优势方面,Android平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。
开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。同时也可以通过一些第三方优化过的系统通过刷机来实现更好的用户体验,如MIUI,Flyme等。

丰富的硬件

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

方便开发

Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。

Google应用

在互联网的Google已经走过10年度历史,从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

展望

2017年 Google I/O大会上 Kotlin被 Google饮定为 Android开发的一等语言,和Java有同样的优先度,为这个已经有相当长历史的JVM语言带来了新的春天

平台支持的角度看,Jetbrains同时作为 Android官方IDE- Android Studio的开发公司,也保证了 Kotlin的 Android开发体验, Android Studio3.0中已经默认集成了 Kotlin的相关支持组件,并且在 Kotlin- Android方面了非常多的工作,尤其是Anko等框架确实解决了 Android开发中的很多难题。

语言本身看、 Kotlin作为一门在JVM上运行的现代编程语言,凭借其无缝兼容Java的优势,以及简洁安全的现代风格在 Android开发上大放异彩。 Kotlin可以兼容一切历史Java代码,降低了迁移成本。相比JVM已有的其他语言, Kotlin也有着很多优势,Kotlin还解决了Java中棘手的空安全问题,以及其他诸多痛点。在无法迁移到高版本Java环境的情况下,Kotlin也提供了 Lambda等高级功能。

如果你是一名 Android开发新手,接下来我们可以一起学习掌握 Android App开发基本能力。如果你是一名熟练的 Android开发人员也可以通过这部分的内容了解 Kotlin在 Android开发中与Java的异同,获得更多的启发。

现在我们就可以开始 Android开发之旅。

1.0 Kotlin-Android开发简介相关推荐

  1. Android开发-简介(一)

    Android的简介: Android是一种基于Linux 内核和其他开源软件的修改版本的移动操作系统,主要为智能手机和平板电脑等触摸屏移动设备设计.Android是由一个被称为开放手机联盟的开发者联 ...

  2. 来自一枚敢敢的Kotlin——Android开发日志之初识RecyclerView

    写在前面 ​ 因为本科课程的原因,我在2022年开始了我的android开发,我以为我跳离了前端,其实没有,我只是从web端换到了移动端,如此美妙的开局!学校里面的内容还在用Java上着android ...

  3. android+ndk+r9+x64下载,Win7 64位中文旗舰版上Cocos2d-x 3.0的Android开发调试环境架设

    系统环境: Win7 64位中文旗舰版 各组件的版本: VS2012 Python2.7.6 x86 安装步骤: 1.默认安装VS2012 2.默认安装Python 2.7.6,修改环境变量Path ...

  4. 不足补0 java_Java Android 开发数字不足位数前面补0

    import java.text.decimalformat; public void changecolor(view view) { decimalformat decimalformat = n ...

  5. 【Android】0、Android 开发从入门到实战超详细路线图

    文章目录 入门 进阶 专项 实战 入门 刚开始入门时,可看 Android开发者官网,先在 Android Studio 的 IDE 上,跑一个 hello world 的 App 程序 然后入门阶段 ...

  6. Kotlin【简介】Android开发 配置 扩展

    重要资源 官方资源:官网 . 官网源码 .官网文档 . 在线 IDE .GitHub 中文资源:中文官网 .中文文档  离线文档:PDF 文件 . PDF 文件 GitBook 版 .ePUB 文件  ...

  7. Android 开发从入门到实战

    第1章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的. Android Studio的开发环境是如何搭建的.如何创建 ...

  8. 最新网易微专业 Android开发系列

    目录 ├─1.Android应用界面开发 │  ├─001 Android开发简介.flv │  ├─002 开始第一个应用.flv │  ├─003 Activity你必须知道的那些事(上).flv ...

  9. gPhone开发简介

    gPhone开发简介 --简单介绍gPhone上的应用软件开发过程 篇首语:准确来说应是"Android开发简介",因为gPhone只是基于Android平台的一款手机.但gPho ...

  10. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建

    第 1 章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的.Android Studio的开发环境是如何搭建的.如何创 ...

最新文章

  1. phpcms_v9修改文章会提示 [hash]数据验证失败
  2. 【连载】优秀程序员的45个习惯之45——及时通报进展与问题
  3. Linux Shell 脚本知识点
  4. Oracle访问远程服务器的数据库
  5. c语言 char operator,C语言取模运算符(modulus operator)“%”的作用是什么
  6. 热狗树 树形dp(中国石油大学我要变强第九场)
  7. 【分享】154页微软WPF官方手册(含.NETCore和.NET Framwork双版本)
  8. java 先进先出的map_「 深入浅出 」java集合Collection和Map
  9. mysql计算机二级选择题题库_全国计算机二级mysql数据库选择题及答案
  10. 基于jquery横向手风琴效果
  11. 矩阵与矩阵的转置相乘
  12. 【TextView】实现QQ一键加群功能
  13. 高斯投影坐标正算公式详解
  14. 苹果手机免越狱群控无需硬件即插即用高清投屏控制操作
  15. UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 的解决方法
  16. C1模拟试卷的一个算法题
  17. Qt学习:QtCharts绘制动态曲线,实时更新数据与坐标轴
  18. 想花钱速学互联网行业,大概花两三个月的时间,出来好找工作吗
  19. tomcatServlet
  20. 当前系统代理不是安全代理,是否信任

热门文章

  1. 使用thyme leaf模板CRUD时遇到的坑
  2. 微信小程序自定义图标动态显示不同颜色
  3. 计算机毕业设计成品基于Uniapp+SSM实现的设备预约管理
  4. 关于jsp返回json数据给前台javascript
  5. MYSQL数据库设计试卷b_MYSQL数据库试题
  6. 《自拍教程79》荣耀V20,通过Python实现自动化语音测试
  7. Apache Log4j2远程代码执行漏洞
  8. sql中pivot函数的使用
  9. 【紧急通告】马云否认支付宝出现漏洞 淘宝大量用户现金被盗 今日支付宝强制升级补丁
  10. (欢迎收藏,每秒自动实时反映市场行情价格)黄金、原油、纸黄金、实物黄金行情价格即时实时走势最新图表