在硬件设备上运行应用
构建 Android 应用时,务必要始终先在真实的设备上测试您的应用,然后再向用户发布。本页面介绍了如何针对设备测试和调试设置您的开发环境和 Android 设备。
您可以将任何 Android 设备用作运行、调试和测试应用的环境。每次编译时,SDK 中包含的工具让您可以轻松地在设备上安装和运行应用。您可以直接从 Android Studio 中将应用安装在设备上,也可以使用 ADB 从命令行安装。如果您还没有设备,请与所在地区的服务提供商确认他们可以提供哪些 Android 设备。
如果您想要一部没有 SIM 锁的电话,则可以考虑选择 Nexus 电话。要购买 Nexus 电话,请访问 Google Play 商店。
注:在设备上开发时,请记住,您仍应该使用 Android Emulator 在与真实设备不同的配置上测试应用。尽管模拟器无法让您测试每一种设备功能(例如加速度计),它仍然让您能够验证应用在不同版本的 Android 平台、不同的屏幕尺寸和屏幕方向等条件下是否可以正常运行。
启用设备上的开发者选项
Android 设备拥有众多您可以在电话上访问的开发者选项,这些选项让您能够进行以下操作:
- 启用 USB 调试。
- 将错误报告快速记录到设备上。
- 在屏幕上显示 CPU 使用率。
- 在屏幕上绘制调试信息,例如布局边界、GPU 视图和硬件层更新,等等。
- 还有很多有助于模拟应用压力或启用调试选项的其他选项。
要访问这些设置,请在系统的 Settings 中打开 Developer options。在运行 Android 4.2 及更高版本的设备上,Developer options 屏幕默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按 Build number 七次。返回上一屏幕,在底部可以找到 Developer options。
面向开发设置设备
利用 Android 设备,您可以开发和调试您的 Android 应用,就像在模拟器上一样。开始之前,您需要先完成以下事项:
- 在清单或 build.gradle 文件中验证您的应用是否“可调试”。
在构建文件中,确保 debug 构建类型中的 debuggable 属性设为 true。构建类型属性将替换清单设置。
- android {
- buildTypes {
- debug {
- debuggable true
- }
在 AndroidManifest.xml
文件中,将 android:debuggable="true"
添加到 <application>
元素中。
注:如果您在清单文件中手动启用调试,请确保在发布版本中将其停用(您的已发布应用通常应当不可调试)。
转到 Settings > Developer options,在您的设备上启用 USB 调试。
注:在运行 Android 4.2 及更新版本的设备上,Developer options 默认情况下处于隐藏状态。如需将其显示出来,请转到 Settings > About phone 并点按 Build number 七次。返回上一屏幕即可找到 Developer options。设置您的系统以检测设备。
- 如果您在 Windows 上开发,则需要为 ADB 安装 USB 驱动程序。如需安装指南和原始设备制造商驱动程序的链接,请参阅原始设备制造商 USB 驱动程序文档。
- 如果您在 Mac OS X 上开发,则不需要进行任何操作。请跳过此步骤。
- 如果您在 Ubuntu Linux 上开发,则需要为想要在开发中使用的每一种设备类型添加一个包含 USB 配置的
udev
规则文件。在规则文件中,每一个设备制造商都由一个唯一的供应商 ID(如ATTR{idVendor}
属性所指定)标识。要查看供应商 ID 列表,请参见下文的 USB 供应商 ID。要在 Ubuntu Linux 上设置设备检测,请执行以下操作:- 以 root 身份登录,并创建此文件:
/etc/udev/rules.d/51-android.rules
。
使用下面的格式将各个供应商添加到文件中:SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
在本例中,供应商 ID 为 HTC 的 ID。MODE
赋值指定读/写权限,GROUP
则定义哪个 Unix 组拥有设备节点。
- 以 root 身份登录,并创建此文件:
注:取决于您的环境,规则语法可能稍有不同。如有需要,请查阅适用于您的系统的 udev
文档。有关规则语法的概述,请参阅编写 udev 规则的指南。
- 现在,请执行:<code>chmod a+r /etc/udev/rules.d/51-android.rules</code>
注:当您将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统将显示一个对话框,询问您是否接受允许在这台计算机上调试的 RSA 密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行 USB 调试和其他 ADB 命令。这样,要在运行 Android 4.2.2 或更高版本的设备上调试,您必须安装 ADB 版本 1.0.31(随 SDK Platform-tools r16.0.1 及更高版本提供)。
通过 USB 充电时,您可以从 SDK platform-tools/
目录执行 adb devices
,验证您的设备是否连接。如果已连接,您将看到设备名称以“设备”形式列示。
如果使用 Android Studio,可以照常运行或调试您的应用。系统将显示 Device Chooser 对话框,其中会列出可用模拟器和已连接设备。选择要在上面安装和运行应用的设备。
如果使用 Android Debug Bridge (ADB),您可以发出包含 -d
标记的命令,将目标确定为您的已连接设备。
USB 供应商 ID
下表提供了在 Linux 上添加 USB 设备支持所需的供应商 ID 参考。USB 供应商 ID 是为规则文件中的 ATTR{idVendor}
属性所赋的值,如上文所述。
公司 | USB 供应商 ID |
---|---|
Acer | 0502 |
ASUS | 0b05 |
Dell | 413c |
Foxconn | 0489 |
Fujitsu | 04c5 |
Fujitsu Toshiba | 04c5 |
Garmin-Asus | 091e |
18d1 | |
Haier | 201E |
Hisense | 109b |
HP | 03f0 |
HTC | 0bb4 |
Huawei | 12d1 |
Intel | 8087 |
K-Touch | 24e3 |
KT Tech | 2116 |
Kyocera | 0482 |
Lenovo | 17ef |
LG | 1004 |
Motorola | 22b8 |
MTK | 0e8d |
NEC | 0409 |
Nook | 2080 |
Nvidia | 0955 |
OTGV | 2257 |
Pantech | 10a9 |
Pegatron | 1d4d |
Philips | 0471 |
PMC-Sierra | 04da |
Qualcomm | 05c6 |
SK Telesys | 1f53 |
Samsung | 04e8 |
Sharp | 04dd |
Sony | 054c |
Sony Ericsson | 0fce |
Sony Mobile Communications | 0fce |
Teleepoch | 2340 |
Toshiba | 0930 |
ZTE | 19d2 |