2008年,Google发布了专为移动设备设计的Android 1.0系统。随后发布的Android 2.x版本迅速崛起,占据了相当一部分移动设备操作系统市场。随后,Android几乎每年都会推出一个新版本,到了2020年,Android的版本已经发展到了Android 11。
Android操作系统自下而上分为Linux内核、硬件抽象层、Android运行时、原生C/C++库、Java API框架和系统应用层等多个层级,如图2-1所示。Android应用程序包括Activity、Service、BroadcastReceiver和ContentProvider四大组件。其中,最为重要的就是Activity,用于控制和显示各种布局与视图。
图2-1 Android操作系统的架构
Android应用程序原本只能通过Java语言编写逻辑代码。Java语言起源于1995年,由Sun公司研发并推出,其前身是Oak语言。Java语言最重要的特性就是跨平台性,即“一次编译,处处运行”,这主要得益于Java语言是通过JVM(Java虚拟机)实现的。正因为这一特性,Java语言伴随着互联网的兴起而广泛被人熟知。目前,Java语言主要应用在Web服务器、移动终端和大数据技术。2009年,随着Sun公司被Oracle公司收购,Java这一语言也带上了Oracle的标志。
由于Java语言编写的应用程序需要通过虚拟机才能运行,其效率远低于C、C++等语言。为了提高Android系统的性能,Android底层针对有限内存、低处理器速度对虚拟机进行了优化,并使用了Dalvik虚拟机。即使如此,在Android发展的初期,其性能效率常常被用户诟病。在Android 4.4以来,Google又进一步推出了Art虚拟机,避免了Dalvik在每次运行应用时通过即时编译器转换为机器码的过程,使得其运行效率大大提高,可获得更好的用户体验,并提高了Android系统的性能和续航。
随后,Android的开发语言又加入了Kotlin新成员。Kotlin语言是由JetBrains推出的,参照并兼容Java语言,提高了语言的安全性、简洁性,是一种静态编程语言。目前,Kotlin已经成为Android开发的官方首推的编程语言,并在国际上广为流行。Kotlin不仅仅可以编译成Java字节码,也可以编译成JavaScript,以便于在没有JVM设备上运行。但是,可能是由于项目历史和学习成本的原因,国内开发者对Kotlin语言使用较少。
从开发环境的角度来说,Android的开发环境经历了从Eclipse到Android Studio的转变。Android Studio基于Intellij IDEA,相比Eclipse拥有更好的性能与用户体验,成为当今主流的Android IDE。
在本书中,Android无人机应用程序采用Android Studio开发环境,使用Java作为逻辑代码的编程语言。