开发者工具选项


开发者工具选项

“开发者工具”菜单提供了许多选项,用于提供有关应用的实时指标和其他信息。此信息可以帮助您进行故障排除、开发和测试。

调用开发者工具菜单

您可以通过多种方式调用“开发者工具”菜单:

  • 遥控器: 在方向键上,同时按住中央向下按钮 5 秒钟;然后松开按钮并按遥控器的菜单按钮。
  • 亚马逊游戏控制器: 同时按住 AY 按钮 5 秒钟;然后松开按钮并按控制器的菜单按钮。
  • 如果 在 Fire TV 上启用了 ADB 并且计算机已连接,您可以运行以下命令来调用该对话框:adb shell am start com.amazon.ssm/com.amazon.ssm.ControlPanel

以下屏幕截图显示了“开发者工具”菜单上的选项:

System X-Ray

System X-Ray 收集即时系统指标,并在屏幕顶部显示为叠加层。打开时,叠加层在屏幕上将始终可见。

System X-Ray 叠加层包含有关以下内容的详细信息:

  • 显示屏
  • CPU
  • 内存
  • 网络

有关 System X-Ray 的深入介绍,请参阅 System X-Ray

高级选项

高级选项允许在使用安卓 MediaCodec API 时显示多媒体信息。当您打开此选项,然后播放媒体时,右侧会显示一个附加显示屏(对于多媒体(音频和视频),标题为“MUL”;对于音频焦点,标题为“AUD”)。

多媒体面板中显示的信息分为三个部分: 音频、视频和音频焦点。

音频

属性 描述
编解码器 音频编解码器格式
硬件加速 如果音频播放经过硬件加速
输入比特率 音频输入比特率
安全 如果安全或不安全

视频

属性 描述
编解码器 视频编解码器格式
硬件加速 如果视频播放经过硬件加速
输入比特率 视频输入比特率
安全 如果视频安全或不安全
丢帧 丢帧计数
分辨率 播放分辨率
帧速率 播放帧速率
颜色标准

音频焦点

属性 描述
音频播放的程序包名称
增益 音频焦点增益影响
损失 音频焦点损失影响
F/U/C 标记/用法/内容
  • 标记 (F): 音频焦点请求的标记值。有关更多信息,请参阅 AudioManager.java#2445
  • 用法 (U): 用法值
  • 内容 (C): 内容值。用法和内容的枚举值可以在这里找到: AudioAttributes.java#72.

音频焦点值缩短如下:

  • AUDIOFOCUS_NONE:none
  • AUDIOFOCUS_GAIN:gain
  • AUDIOFOCUS_GAIN_TRANSIENT:g_tr
  • AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:gtmd
  • AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE:gtre
  • AUDIOFOCUS_LOSS:loss
  • AUDIOFOCUS_LOSS_TRANSIENT:l_tr
  • LOSS_TRANSIENT_CAN_DUCK:ltcd
  • UNKNOWN:unkn

快照

快照为用户提供了一种通过 adb 命令即时收集所有指标信息的方法。每当您输入以下命令时,指标信息都将显示在命令行中。

adb shell dumpsys activity service com.amazon.ssm/.OverlayService

System X-Ray 必须正在运行,该命令才能正常发挥作用。

以下是一个示例输出:

SERVICE com.amazon.ssm/.OverlayService 3dde6680 pid=10820
  Client:
    [com.amazon.ssm.timestamp]: [2017-02-07 15:11:53]
    [com.amazon.ssm.display.resolution]: [1080]
    [com.amazon.ssm.display.refreshrate]: [60]
    [com.amazon.ssm.display.hdcpversion]: [1.0]
    [com.amazon.ssm.cpu.core0]: [30]
    [com.amazon.ssm.cpu.core1]: [29]
    [com.amazon.ssm.cpu.core2]: [0]
    [com.amazon.ssm.cpu.core3]: [0]
    [com.amazon.ssm.memory.appname]: [tv.twitch.android.viewer]
    [com.amazon.ssm.memory.appmemory]: [56.8 MB]
    [com.amazon.ssm.memory.activememory]: [1.3 GB]
    [com.amazon.ssm.memory.availablememory]: [231.3 MB]
    [com.amazon.ssm.network.rssi]: [-56]
    [com.amazon.ssm.network.systemdownloadspeed]: [2.2 Mbps]
    [com.amazon.ssm.network.appdownloadspeed]: [2.1 Mbps]

记录并共享

“记录并共享”将有关 CPU、内存、网络和多媒体的瞬时指标作为历史数据存储到数据库中。虽然相同的信息将通过 System X-Ray 叠加层以图形方式实时显示,但“记录并共享”会获取此信息并将其存储到可转储到命令行的历史记录中。

要使用“记录并共享”,请首先将“开发者工具”菜单中的“记录并共享”设置切换为。然后系统会提示您选择“记录设置”:

这些属性控制以下内容:

  • 间隔: 两次记录之间的时间: 2 秒、4 秒、8 秒、16 秒或 32 秒。
  • 持续时间: 数据在数据库中存储的时间: 1 小时、2 小时、4 小时、8 小时或 16 小时。

默认值(2 秒间隔,1 小时)意味着每 2 秒钟就会有统计数据被记录并存储在数据库中。记录将在数据库中总共存储 1 小时。

播放媒体以收集一些记录的信息后,您可以使用以下方式将所有历史指标转储到命令行:

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -all

响应包括以下信息:

CPU:

  • Timestamp
  • cpu0
  • cpu1
  • cpu2
  • cpu3

内存:

  • Timestamp
  • Total_Memory
  • Available_Memory
  • Active_Memory
  • Foreground_App_Memory
  • Foreground_App_PackageName

网络:

  • Timestamp
  • RSSI
  • Download_Speed
  • Foreground_App_Download_Speed
  • Foreground_App_PackageName

多媒体:

  • Timestamp
  • AudioCodec
  • AudioInputBitrate
  • AudioAccelerated
  • AudioSecure
  • VideoCodec
  • VideoInputBitrate
  • VideoAccelerated
  • VideoSecure
  • VideoResolution
  • VideoFramerate
  • VideoFramedropped

以下是命令行上的显示示例:

 CPU
 Timestamp           cpu0 cpu1 cpu2 cpu3
 2016-10-31 11:40:22 19   16   13   18

 MEMORY
 Timestamp           Total_Memory Available_Memory Active_Memory Foreground_App_Memory Foreground_App_PackageName
 2016-10-31 11:40:23 919.3 MB     156.3 MB         731.8 MB      31.3 MB               com.amazon.ssm

 NETWORK
 Timestamp           RSSI Download_Speed Foreground_App_Download_Speed Foreground_App_PackageName
 2016-10-31 11:40:21 -41  14.4 kbps      0 bps                         com.amazon.ssm
 2016-10-31 11:40:23 -41  14.0 kbps      0 bps                         com.amazon.ssm

如果您只对部分指标感兴趣,则可以在命令中添加不同的选项。例如,要将内存和网络历史指标转储到命令行:

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -memory -network

下表显示了所有可用选项:

选项 描述
空白
(没有传递选项)
转储快照信息
-snapshot 转储快照信息
-all 转储数据库中的所有信息
-memory 转储数据库中的内存信息
-cpu 转储数据库中的 CPU 信息
-network 转储数据库中的网络信息
-multimedia 转储数据库中的多媒体信息

要检查可用的选项,请传递 -help 参数:

adb shell dumpsys activity service com.amazon.ssm/.OverlayService -help

您可以清除存储在数据库中的记录指标(在持续时间自动清除数据之前)。从开发者选项工具菜单中,选择记录并共享,然后单击遥控器上的菜单按钮。

安全区

有些电视机对显示屏使用过扫描。过扫描意味着电视机会在可见屏幕边缘显示一些信息(以适应显示器中的差异)。不应在过扫描区域中显示重要信息。

要使过扫描区域可见,您可以将安全区开关切换到。这将使过扫描区域变得明显,以便您可以避免在这些区域中显示任何信息。

请注意,Fire TV Stick(第 2 代)不包括屏幕尺寸校准。如果屏幕显示不能与电视屏幕正确契合,则过扫描区域可能无法准确显示。

开发者选项

目前,某些第三方应用(例如 Netflix 和 HBO Go)在 Amazon Fire TV 主屏幕上的特定行中显示推荐信息。有关推荐的更多信息,请参阅推荐概览

开发者选项允许您打开名为““由我的应用推荐”的行(显示在 Netlix 和 HBO Go 行下方)。此“由我的应用推荐”行将显示从第三方应用发送的推荐。

启用此行将显示来自用户已安装的所有第三方应用的推荐(不包括 Netflix 和 HBO Go 等某些应用,这些应用在自己的行上显示推荐)。

网络代理

如果您的应用与远程服务或网站通信,则检查它生成的 HTTP 或 HTTPS 流量通常很有用。这包括您的应用发起的请求及其收到的响应,以及包含 Cookie、缓存信息和其他信息的 HTTP 标头。

网络代理选项允许您指定所有网络流量将通过的代理的主机名和端口,允许您观察发送到您的应用或从中发送的数据。代理主机和您的 Fire TV 必须位于同一网络上。

使用 Charles Proxy 处理 HTTPS 和加密数据

如果您的应用使用敏感信息,您很可能依赖 HTTPS 连接来防止窃听和中间人攻击。在这种情况下,流量在源和目标之间通过 SSL 进行加密,使其保持私密性 — 即使您通过“网络代理”选项配置自己的代理也无法访问数据。

某些代理支持 SSL 代理,允许您查看网络流量,即使网络流量已加密。Charles Proxy 是一个提供此功能的常见实用工具。当您的应用尝试与远程服务器通信时,Charles Proxy 会拦截服务器证书,并动态地生成和签署自己的证书。它使用此替代证书与您的应用建立安全连接,然后使用它收到的原始服务器证书安全地连接到远程站点,从而允许您以纯文本形式查看应用与 SSL Web 服务器之间的通信。

要在 Charles Proxy 中利用 SSL 代理,您的应用必须信任用于签署 Charles Proxy 生成的替代证书的证书颁发机构 (Charles CA)。在 Fire OS 5 上,只需在设备上安装证书就足够了,因为所有应用都隐式信任在设备级别安装的证书。在 Fire OS 6 上,每个应用都必须通过在 res/xml/network_security_config.xml 中列出证书来明确指定它信任哪些证书。

要确定测试设备上安装的 Fire OS 版本,请转到设置 > 我的 Fire TV > 关于 > Fire TV,然后查看“软件版本”详细信息。您还可以查看 Fire TV 设备及其对应的 Fire OS 版本的完整列表

以下步骤假定您已经安装并配置了 Charles Proxy。如果您是应用的新手,请参阅文档

信任 FOS 5 上的 Charles CA

  1. 从 Charles Proxy 应用中获取 PEM 格式的证书文件。从菜单中,选择帮助 > SSL 代理 > 保存 Charles 根证书...
  2. 将证书文件上传到您的 Fire TV 设备:
     adb push charles-ssl-proxying-certificate.pem /storage/emulated/0/Download
    
  3. 调出您刚上传的文件的“证书安装程序”对话框:
     adb shell am start -a "android.intent.action.VIEW" -d "file:///storage/emulated/0/Download/charles-ssl-proxying-certificate.pem" -t "application/x-x509-ca-cert"
    
  4. 提供一个友好的名称,并确保在凭据使用下选择 VPN 和应用

  5. 确定安装证书。系统将要求您使用您的亚马逊凭证进行身份验证,屏幕上的通知将确认操作成功。

信任 FOS 6 上的 Charles CA

  1. 获取并安装上述 FOS 5 的证书文件。
  2. 更新您的安卓项目清单以包含网络安全配置文件:

     <?xml version="1.0" encoding="utf-8"?>
     <manifest ... >
         <application android:networkSecurityConfig="@xml/network_security_config"
                      ... >
            ...
         </application>
     </manifest>
    
  3. 将以下 res/xml/network_security_config.xml 添加到您的安卓项目中,以明确信任所有已安装的证书:

     <?xml version="1.0" encoding="utf-8"?>
     <network-security-config>
         <debug-overrides>
             <trust-anchors>
                 <!-- Trust the following CA while debuggable only -->
                 <certificates src="user"/>
             </trust-anchors>
         </debug-overrides>
     </network-security-config>
    

- 或 -

  1. 获取上述 FOS 5 的证书文件,但不要将其安装在设备上。
  2. 而是通过将文件复制到安卓项目的 res/raw 子目录中,直接将文件嵌入到您的应用中。为了方便起见,您可以重命名该文件(例如,res/raw/my_ca)。
  3. 如上所述,更新您的安卓项目清单以添加网络安全配置文件,如 res/xml/network_security_config.xml,但更改 src 属性以使用您为证书选择的文件名:

     ...
     <!-- Trust the following CA while debuggable only -->
     <certificates src="@raw/my_ca"/>
     ...
    

检查加密流量

将设备配置为信任 Charles CA 证书后,您可以在设备上启用网络代理,并开始观察进出应用的加密流量。按照列出的顺序执行以下步骤非常重要。

使用 Charles Proxy 检查加密流量:

  1. 确保 Charles Proxy 正在运行。
  2. 在 Charles Proxy 应用中打开 SSL 代理。从菜单中,选择代理 > SSL 代理设置...,然后使用添加指定要观察的主机。子域(如 www)被认为是不同的,应单独列出。

  3. 在您的设备上,将网络代理模式设置为手动,并指定运行 Charles Proxy 的主机名(或 IP 地址)和端口号。

  4. 启动您的应用。

现在,您可以查看应用与您在 Charles Proxy 中为其启用 SSL 代理的服务器端点之间的安全网络流量。数据未加密以便由 Charles Proxy 显示,然后重新加密以传送到其最终目的地。您可以看到每个请求和响应的明文标题和正文。

有关使用 Charles Proxy 检查应用的网络流量的更多信息,请参阅文档

启动 Network Advisor

启动用于检查网络连接强度、通道和其他详细信息的网络分析窗口。如果存在问题,Network Advisor 会提供建议来解决问题。

另请参阅

有关更多详细信息,请参阅以下内容: