十八、命令行界面

在这一章中,我们总结了可以用来构建、管理和维护在 Android Studio 之外运行的任务的命令行工具。

注意

  • 这些工具在某种程度上是“半”官方的;您可能会在 SDK 文件夹中稍微不同的位置找到它们,并且在线文档不一定是最新的。

  • 这里显示的工具是 Linux 发行版的一部分。对于其他操作系统,提供了相应的版本,它们的用法将是相似的。

  • 该清单并不详尽;如果您安装了更少或更多的 SDK 包,它可能会与您的安装有所不同。

SDK 工具

18-1 描述了该文件夹中提供的与平台无关的工具:

表 18-1

SDK 工具

|

命令

|

描述

| | --- | --- | | apkanalyzer | 使用这个来分析你能找到的 APK 文件,例如,在PROJECT-DIR/PROJECT/release文件夹中(PROJECT经常读为app)。调用不带参数的命令,如下所示,将显示用法信息:./apkanalyzer | | archquery | 这是一个查询操作系统架构的简单工具。./archquery例如,这会输出x86_64。 | | avdmanager | 用这个来管理虚拟设备(AVD = Android 虚拟设备)。您可以创建、移动和删除设备,还可以列出设备、目标和 avd。调用不带参数的命令,如下所示,将显示用法信息:./avdmanager您可以在∼/.android/avd中找到该命令处理的虚拟设备的数据文件。用于创建设备的系统映像在SDK_INST/system-images中。 | | jobb | 使用它来管理不透明二进制 Blob (OBB)文件。这些是 APK 扩展文件,存放在外部存储器上,例如 SD 卡,只能从你的应用内部访问。调用不带参数的命令,如下所示,将显示用法信息:./job | | lint | 这是用于代码检查的 LINT 工具。调用不带参数的命令,如下所示,会显示用法信息。./lint | | monkeyrunner | 这是一个强大的测试工具,通过在你的电脑上使用 Python 脚本来控制 Android 应用。调用以下命令会显示使用信息:./monkeyrunner不带参数启动它会启动一个 Jython shell。你可以在第 14 章中找到更多关于monkeyrunner的细节。 | | screenshot2 | 使用它从设备或模拟器中截取屏幕截图。调用不带参数的命令,如下所示,将显示用法信息:./screenshot2 | | sdkmanager | 这个工具帮助你管理 Android SDK 的包。您可以安装、卸载或更新 SDK 软件包,并且可以使用它来列出已安装和可用的软件包。援引./sdkmanager ––help显示详细的使用信息。例如,要列出已安装和可用的包,包括构建工具、平台、文档、源代码、系统映像和更多 SDK 组件,请调用:./sdkmanager ––list要安装新组件,该工具需要下载它们。存在几个标志;查看–help的输出,了解如何指定代理或禁用 HTTPS。 | | uiautomatorviewer | 这将打开 UI Automator GUI。./uiautomatorviewer更多信息见第 14 章。 |

SDK_INST/tools/bin

这些工具侧重于虚拟设备、SDK 本身以及各种测试和工件管理任务的管理。

在父目录中,如下所示:

SDK_INST/tools

您会发现更多的工具。对它们的总结见表 18-2

表 18-2

更多 SDK 工具

|

命令

|

描述

| | --- | --- | | android | 已弃用。不带参数地调用它来查看概要。 | | emulator | 模拟器管理工具。我们在第 1 章谈到了模拟器。引起./emulator –help获取此命令的用法信息。 | | emulator-check | 用于主机系统的诊断工具。查看的输出./emulator-check –h为了一个概要。 | | mksdcard | 创建用作模拟器映像的 FAT32 映像。调用它时不带用法信息参数,如下所示:./mksdcard | | monitor | 启动图形设备监视器。这与从 Android Studio 的工具➤ Android ➤ Android 设备监视器中调用的是同一个设备监视器。注意,如果您在 Android Studio 的一个实例正在运行时运行这个命令,您可能会得到一个错误消息。 | | proguard | Proguard 程序驻留在这个目录中。使用 Proguard,您可以通过忽略文件、类、字段和方法来缩小 APK 文件。在在线文档中找到“压缩您的代码和资源”,了解 Proguard 是如何工作的。 |

SDK 构建工具

18-3 列出了该文件夹中提供的构建工具:

表 18-3

SDK 工具

|

命令

|

描述

| | --- | --- | | aapt | 这是 Android 素材打包工具。调用不带参数的命令,如下所示,将显示用法信息:./aapt该工具能够列出 APK 文件的内容,并从中提取信息。此外,它能够打包素材,添加和删除 APK 文件中的元素。该工具还负责创建 R 类,它将资源映射到代码内部可用的资源 id(Android Studio 会自动为您完成这项工作)。 | | aapt2 | 这是前面描述的aapt工具的后继者。调用不带参数的命令,如下所示,会显示一些基本的用法信息:./aapt2使用CMD调用compilelinkdumpdiffoptimizeversion中的任意一个./aapt2 CMD -h,会给出更详细的信息。在aapt命令的帮助下进行交叉检查提供了额外的帮助。 | | aarch64-linux-android-ld | Android 对象文件的特殊链接器,针对 64 位 ARM 架构的设备。调用该命令会显示详细的使用信息,如下所示:./aarch64-linux-android-ld ––help通常,如果你使用 Android Studio,你不必直接调用这个工具,因为它会为你处理编译和链接。 | | aidl | AIDL 是 Android 接口定义语言,处理不同应用的绑定服务类之间的低级进程间通信。aidl工具可用于将*.aidl接口定义文件编译成定义接口的 Java 语言接口文件。调用不带参数的命令会显示用法信息。./aidl | | apksigner | 管理 APK 文件签名。APK 文件需要签名才能发布。Android Studio 可以帮助你完成这个过程(参见构建➤生成签名的 APK ),但是你也可以使用这个工具。有关用法信息,请按如下方式调用它:./apksigner –h | | arm-linux-androideabi-ld | Android 目标文件的特殊链接器,目标是 32 位 ARM 架构的设备和 ABI 编译器生成的目标文件。调用该命令会显示详细的使用信息。./arm-linux-androideabi-ld ––help如果你使用 Android Studio,通常你不需要直接调用这个工具,因为它会为你处理编译和链接。 | | bcc_compat | Android 用于renderscript的一个 BCC 编译器。按如下方式调用命令会显示用法信息:./bcc_compat ––help | | dexdump | 一个工具,用于调查 APK 文件中包含类的 DEX 文件。如下所示,不带参数调用会显示用法信息:./dexdump | | dx | 一个管理 DEX 文件的工具。例如,您可以创建 DEX 文件或转储其内容。调用以下命令获取用法信息:./dx ––help | | i686-linux-android-ld | Android 对象文件的链接器,面向 x86 架构的设备。如此处所示,调用命令会显示详细的使用信息:./i686-linux-android-ld ––help通常,如果你使用 Android Studio,你不必直接调用这个工具,因为它会为你处理编译和链接。 | | llvm-rs-cc | renderscript 源代码编译器(脱机模式)。引起./llvm-rs-cc ––help查看一些使用信息。 | | mainDexClasses | 这是为了遗留应用希望允许命令dx上的–multi-dex,并使用com.android.multidex.installer库加载多个文件。mainDexClasses脚本将在–main-dex-list中提供给dx的文件内容。 | | mipsel-linux-android-ld | 一个 Android 对象文件的链接器,目标是具有 MIPS 架构的设备。调用命令./mipsel-linux-android-ld ––help显示详细的使用信息。通常,如果你使用 Android Studio,你不必直接调用这个工具,因为它会为你处理编译和链接。 | | split-select | 在给定目标设备配置的情况下,允许生成用于选择拆分 APK 的逻辑。调用命令./split-select ––help显示一些使用信息。 | | x86_64-linux-android-ld | Android 对象文件的链接器,面向具有 x86 64 位架构的设备。调用命令./x86_64-linux-android-ld --help显示详细的使用信息。通常,如果你使用 Android Studio,你不必直接调用这个工具,因为它会为你处理编译和链接。 | | zipalign | ZIP 对齐实用程序。开发人员不一定习惯的事实是,操作系统可能依赖于以某种方式对齐的归档文件的元素,例如,条目总是从 32 位边界开始。该工具可用于相应地修改 ZIP 文件。援引./zipalign –h显示使用信息。 |

SDK_INST/build-tools/[VERSION]

其中包括连接器、编译器、APK 文件工具和一个 Android 界面定义语言(AIDL)管理工具。

SDK 平台工具

18-4 描述了该文件夹中提供的平台相关工具:

表 18-4

SDK 平台工具

|

命令

|

描述

| | --- | --- | | adb | Android 调试桥。关于adb命令的描述,见表后的文字。 | | dmtracedump | 从跟踪转储创建图形化的调用堆栈图。跟踪文件必须是用android.os.Debug类获取的。不带参数地调用它,如下所示,以获取有关该命令的信息:./dmstracedump | | e2fsdroid | 挂载一个映像文件。目前已损坏。 | | etc1tool | 使用这个在 PNG 和 ETC1 图像格式之间转换。引起./etc1tool ––help查看使用信息。 | | fastboot | 这是您可以用来修改设备固件的快速启动程序。引起./fastboot ––help获取使用信息。 | | hprof-conv | 使用它将从 Android OS 工具获得的 HPROF 堆文件转换成标准的 HPROF 格式。不带参数地调用它,如下所示,以获取用法信息:./hprof-conv | | make_f2fs | 用来在某个设备上创建一个 F2FS 文件系统。如下所示,不带参数调用它以获取用法信息:./make_f2fs | | mke2fs | 生成 Linux 第二个扩展文件系统。不带参数调用它,如下所示,以查看选项:./mke2fs | | sload_f2fs | 用于将文件加载到 F2FS 设备中。不带参数调用它,如下所示,以查看选项:./sload_f2fs | | sqlite3 | 启动 SQLite 管理工具。如下所示调用它以获取用法信息:./sqlite3 –help | | systrace/ systrace.py | 研究 Android 系统的图形 Systrace 实用程序。工具adb所在的路径必须是PATH环境变量的一部分,并且必须安装 Python。然后你就可以跑了python systrace/systrace.py –h获取命令概要。 |

SDK_INST/platform-tools

adb命令调用的 Android Debug Bridge (ADB)是一个多功能工具,可以将您的开发 PC 连接到正在运行的仿真器和通过 USB 或 Wi-Fi 连接的设备。它由开发 PC 上的客户端和透明服务器进程以及设备上运行的守护程序组成。您可以使用adb进行以下操作:

  • 查询可访问设备

  • 安装和卸载应用(APK 文件)

  • 将文件复制到设备或从设备复制文件

  • 执行备份和恢复

  • 连接到应用的日志输出

  • 在设备上启用 root 访问权限

  • 在设备上启动 shell(例如,查看和研究应用的文件)

  • 开始和停止活动和服务

  • 发布广播

  • 启动和停止分析会话

  • 转储堆

  • 访问设备上的软件包管理器

  • 截图录视频

  • 重启设备。

有关更多详细信息,请在在线文档中找到“Android 调试桥”页面。通过以下方式调用它,以显示该命令提供的帮助:

./adb

例如,使用此列表列出连接的设备:

./adb devices

要打开设备上的 shell,请使用下面的命令,参数DEVICE_NAME是设备列表中第一列的条目之一:

./adb -s DEVICE_NAME shell

如果只有一个设备,在前面的命令中,您可以省略-s标志和设备名称。

注意

您必须在真实设备上启用调试,ADB 才能成功连接到这些设备。