Android 常用开发命令:adb命令、android命令、emulator命令和mksdcard命令
环境:Windows10
版本:Android Studio 4.0
前提
Android SDK提供多种命令行工具,便于开发者进行开发与调试。在下载Android SDK后,需要将platform-tools和tools两个文件夹的位置增加到环境变量中,才能使用这些命令行工具。
这里安装好了Android Studio 4.0,所以会自动安装上了SDK。
如果在使用 adb 命令时,出现下面的错误:
'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。
刚需要手动添加环境变量,将 platform-tools 和 tools 目录添加到Path中去。其中我的计算机中 sdk 目录是 C:\Users\user\AppData\Local\Android\Sdk\。
一、adb命令
Android调试桥(adb)是一个多用途命令行工具,它允许开发人员与模拟器实例或者连接的Android设备进行通信。
它由3部分组成:
运行于电脑的客户端:开发人员通过adb命令来调用客户端。客户端接收、解析adb命令,并根据命令完成相关操作。例如ADT插件和DDMS插件等Android工具也创建adb客户端。
运行于电脑后台进程的服务器:服务器管理客户端和运行 adb 守护进程的模拟器或者设备的通信;
守护进程:它作为后台进程运行于每个模拟器或者设备实例,管理模拟器或设备实例与后台之间的通信。
启动adb客户端时,它会检查adb服务器进程是否运行。如果没有,则启动该进程。在服务器启动后,它会绑定到本地TCP的5037端口,并监听adb客户端发送的命令。所有adb客户端使用5037端口号与adb服务器进行通信。
接下来,服务器与所有运行的模拟器或设备实例建立连接,它通过扫描5555到5585之间的奇数端口来定位模拟器或设备实例。当服务器发现adb守护进行时,它建立一个到该奇数端口的连接。每个模拟器或设备实例需要一对连续端口:偶数端口用于控制台连接,奇数端口用于adb连接。例如:
模拟器1,控制台:5554
模拟器1,adb:5555
模拟器2,控制台:5556
模拟器2,adb:5557
如上所示,通过端口5554连接的控制台与通过端口5555连接的adb是同一个模拟器。
一旦服务器与所有模拟器实例建立连接,开发人员就可以使用adb命令控制和访问这些实例。由于服务器管理模拟器或设备实例的连接并且处理多个adb客户端命令,开发人员可以使用任何客户端(或者脚本)控制任何模拟器或设备实例。
1 查询模拟器或设备实例
adb devices
输出结果由两部分组成:序列号和状态。
序列号由两部分组成:设备类型和端口号。
状态有两种:offline(未连接)、device(已连接)。
注意:device只表示模拟器/设备处于连接状态,并不表示启动完成
2 指定模拟器或设备实例
如果当前系统中运行多个模拟器/设备实例,在运行命令时需要指定目标实例。其命令格式如下:
adb -s <serialNumber> <command>
<serialNumber>参数表示序列号;
<command>参数表示执行的命令。
例如需要在emulator-5554上安装HelloWorld.apk应用,可以执行如下命令:
adb -s emulator-5554 install HelloWorld.apk
注意:如果运行多个模拟器或设备,不指定设备则会报错
3 安装、卸载应用程序
使用adb命令可以在模拟器或设备上安装和卸载应用程序,其命令格式如下:
adb inatall [-r] [-s] <path_to_apk>
-r:重新安装该apk包
-s:把apk包安装到 SD 卡上(默认是安装到内部存储器上)
<path_to_apk>:参数表示apk包的路径。
adb uninstall [-k] <apk>
-k:只删除应用程序,但保留该程序所用的数据和缓存目录
4 模拟器与设备间的文件复制
使用adb命令可以完成文件的复制功能。与文件安装不同,它可以用于任意类型的文件。
将文件从本地电脑复制到模拟器/设备实例中的命令为:
adb push <local> <remote>
<local>参数表示电脑上的文件(文件夹)位置
<remote>参数表示模拟器/设备实例上的文件(文件夹)位置
将文件从模拟器/设备实例复制到本地电脑的命令为:
adb pull <remote> <local>
说明:使用该命令也可以完成向SD卡复制文件。
5 进入Shell
Android平台底层使用Linux内核,因此可以使用Shell来进行操作。
进入Shell的命令如下:
adb shell
二、android命令
android命令是一个非常重要的开发工具,其功能如下:
[1]创建、删除、查看Android虚拟设备(AVD)
[2]创建、更新Android项目;更新Android SDK,内容包括新平台、插件和文档等;
说明:如果使用安装了ADT插件的Eclipse进行开发,则可以不使用android命令。
1.获得可用的android平台
在安装Android SDK时,下载了多个版本的Android平台,使用android命令可以获取所有可用的Android平台列表,该命令如下所示:
android list targets
说明:android命令通过扫描SDK安装文件夹中的add-ons和platforms子文件夹生成这些信息。
2 创建AVD
除了使用AVD管理工具来管理AVD,还可以使用android命令。创建AVD命令如下:
android create avd -n <name> -t <targetID> [-<option> <value>] . . .
<name>参数表示AVD名称,例如"AVD4.0.3",通常在名称中增加版本号以示区别。
<targetID>参数是由android工具分配的一个整数,它与系统镜像名称、API等级等属性无关,需要使用android list targets命令来查看。
除了上面两个必要的参数外,还可以同时提供模拟器SD卡大小、模拟器皮肤、用户数据文件位置等信息。
如果使用的是标准Android系统镜像(android list targets命令输出中Type是Platform),则创建时会询问是否自定义硬件配置。
3 删除 AVD
android delete avd -n <name>
<name>参数表示AVD名称。
三、emulator命令
Android SDK中提供了一个移动设备模拟器,开发人员不必准备真实的移动设备就可以进行Android开发。通过android命令可以创建模拟器,使用emulator命令可以控制模拟器。如
emulator -avd xxx -sdcard d:\sdcard.img
四、mksdcard命令
mksdcard命令可以快速创建FAT32磁盘镜像,启动模拟器时加载该磁盘镜像可以模拟真实设备的SD卡。在创建AVD时,也可以同时创建SD卡。使用该命令的好处是,可以在多个模拟器间共享SD卡,命令如下:
mksdcard -1 <label> <size> <file>
<label>参数表示磁盘镜像的卷标签
<size>参数表示SD卡大小,可以使用K、M等单位
<file>参数表示SD卡的路径或名称