用户:Yushaen0722/Android软件开发

Android堆栈[1]
Nexus 4,一款对开发者友好的Google Nexus系列手机。[2]

Android软件开发是指开发在Android上运行的应用程序的活动,以Java作为主要编程语言(也支持Kotlin或其他语言),并使用Android软件开发工具包或其他的开发环境。

官方开发工具

Android SDK

Android SDK
开发者Google
首次发布2009年10月,​15年前​(2009-10
当前版本26.0(2017年3月,​7年前​(2017-03[3]
编程语言Java
操作系统跨平台
语言英文
类型集成开发环境, 软件开发工具包
网站developer.android.com/tools/sdk/eclipse-adt.html, developer.android.com/sdk/index.html

Android SDK(Software Development Kit,软件开发工具包)包含了一系列完整的开发工具[4],其中包括调试器、程序库、一款基于QEMU的手机模拟器、文档、示例代码以及教程。目前支持的开发平台有Windows 7或更高版本、Mac OS X 10.5.8或更高版本,以及各种现代Linux桌面发行版等。从2015年三月起,Android SDK不能在Android上运行,但是通过使用一些Android应用仍可以在Android上进行软件开发。[5][6][7]

2014年底以前,官方支持的集成开发环境(Integrated Development Environment,简称IDE)是使用Android Development Tools (ADT) 插件的Eclipse,尽管当时所有版本的IntelliJ IDEA对Android开发有着良好的支持[8]NetBeans也能通过一个插件来支持Android开发。[9]到了2015年,由Google开发,基于IntelliJ IDEA的Android Studio[10]成为了官方的IDE。然而,开发者们仍能自由选择使用其他的IDE,但是Google阐明,为了能够集中精力开发Android Studio,从2015年底起,正式弃用ADT插件。[11]另外,开发者们可以用任何一种文本编辑器来编辑Java和XML文件,然后使用命令行工具(需要安装Java开发包Apache Ant)来创建、构建和调试Android应用以及控制连接的Android设备(比如,远程触发设备重启或者安装软件包)。[12]

Android SDK增强功能与Android开发平台的关系紧密。Android SDK亦可以支持旧版本Android平台,以便有开发者想针对旧设备开发应用。开发工具都是一些可供下载的组件,所以下载了最新版本的开发工具之后,仍可以下载较旧版本用作兼容性测试。[13]

在Android中,应用程序被打包成APK文件储存在/data/app目录下(由于安全原因,仅有root用户才能访问该目录)。APK文件中包含有.dex文件[14]Dalvik Executable,一种编译字节码文件)和资源文件等文件。

Android调试桥

Android调试桥(Android Debug Bridge,简称ADB)是Android SDK附带的一个工具,由可以互相通信的客户端-服务器程序组成。一般通过命令行界面调用[15],另外也有多种可以调用ADB的图形用户界面程序。

一般使用以下命令格式来调用ADB:

adb [-d|-e|-s <序列号>] <命令>
      -d 指定使用USB连接的设备
      -e 指定在电脑上运行的Android模拟器
      -s 通过由ADB分配的序列号来指定设备
(如果仅有一个已连接的设备或运行中的模拟器,可以不用指定以上选项)

例如,可以通过命令backup将Android应用备份到一个文件(默认文件名是backup.ab)。[16]

2011年三月,有安全人员提出,在受到“资源耗尽攻击”之后,ADB可以成为一个试图在已连接的手机上安装Rootkit程序的容器。[17]

Fastboot

Fastboot是一种包含在Android SDK内的诊断协议,主要用于通过USB连接在主机上修改设备的闪存文件系统。它要求在仅初始化最基本硬件的Bootloader模式或Secondary Program Loader模式下启动设备。启用协议之后,设备将接受一系列使用命令行通过USB端口发送给它的命令。

常用fastboot命令包括:

  • flash – 将主机上的一个二进制镜像文件覆盖到指定分区
  • erase – 擦除指定分区
  • reboot – 重启设备后进入主系统或者Recovery系统,否则返回到Bootloader界面
  • devices – 显示所有连接上主机的设备以及其序列号
  • format – 格式化指定分区(分区的文件系统必须能够被设备识别)

Android NDK

Android NDK

Android NDK
开发者Google
首次发布2009年6月,​15年前​(2009-06[18]
当前版本15(2017年6月,​7年前​(2017-06[18]
编程语言C语言C++
操作系统
平台IA-32 (仅支持Windows)、x86-64
语言英文
类型软件开发工具包
网站developer.android.com/ndk/index.html

通过Android NDK(Native Development Kit,原生开发工具包),用C/C++语言编写的程序库能够编译成ARM架构MIPS架构或者x86(或者其64位变种)机器码并安装在Android上。这些原生程序库运行在Dalvik虚拟机上,通过System.loadLibrary调用可以被应用程序从Java代码中调用,System.loadLibrary是标准Android Java类的一部分。[19][20]

Android开放配件开发套件

原生Go支持

外部硬件开发

第三方开发工具

AIDE

App Inventor for Android

Basic4android

Corona SDK

Delphi

HyperNext Android Creator

Kivy

Lazarus

Processing

Qt for Android

RubyMotion

SDL

Visual Studio 2015

Xamarin

Android开发者挑战赛

社区维护固件

Java标准

历史和市场份额

参见

参考资料

  1. ^ The Android Source Code  |  Android Open Source Project. source.android.com. [2017-07-24]. 
  2. ^ Syed H. Editorial: Why You Should Go Nexus. Droid Lessons. 2012-9-24 [2017-07-24]. 
  3. ^ SDK Tools | Android Developers. Developer.android.com. [2017-07-24]. 
  4. ^ Command Line Tools | Android Studio. Android Developers. 2009-7-21 [2017-07-24]. 
  5. ^ appfour. AIDE- IDE for Android Java C++ - Android Apps on Google Play. google.com. 
  6. ^ gesturedevelop. Java Editor - Android Apps on Google Play. google.com. 
  7. ^ Tanapro GmbH, Tom Arn. JavaIDEdroid - Android Apps on Google Play. google.com. 
  8. ^ IntelliJ Android Development. [2017-07-24]. 
  9. ^ NBAndroid Plugin. [2017-07-24]. 
  10. ^ Download Android Studio and SDK Tools | Android Studio. 
  11. ^ Eason, Jamal. An update on Eclipse Android Developer Tools. Android Developers Blog. Google. 2015-6-26 [2017-07-24]. 
  12. ^ Westfall, Jon. Backup & Restore Android Apps Using ADB. JonWestfall.com. 2009-8-25 [2017-07-24]. 
  13. ^ SDK Tools Release Notes | Android Studio. 
  14. ^ Android SDK Glossary. 
  15. ^ "Android Debug Bridge | Android Developers"
  16. ^ Jack Wallen. How to create a full backup of your Android device without root. 2015-03-06 [2017-07-24]. 
  17. ^ Lemos, Robert. Open source vulnerabilities paint a target on Android. 2011-03-25 [2017-07-26]. 
  18. ^ 18.0 18.1 Android NDK | Android Developers. Developer.android.com. 2012-10-13 [2017-07-30]. 
  19. ^ Srinivas, Davanum. Android — Invoke JNI based methods (Bridging C/C++ and Java). 2007-10-09 [2017-11-17]. 
  20. ^ System | Android Developers. Android Developers. [2017-11-17]. 

参考文献

外部链接