as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
开发
测试
应用发布
盈利
用户参与
设备规格
资源

在Fire OS上衡量Fire TV应用的KPI

在Fire OS上衡量Fire TV应用的KPI

“性能测试”是运行Fire OS的亚马逊Fire TV设备上的应用测试过程,测试领域包括兼容性、可靠性、速度、响应时间、稳定性和资源使用等。您可以使用此测试来识别和解决应用的性能瓶颈。性能测试涉及收集和评估关键性能指标 (KPI)。要收集KPI指标,您需要在亚马逊设备上运行一组特定的步骤,然后使用日志等设备资源查找或计算指标。

在将您的应用提交到亚马逊应用商店之前,请务必运行性能测试。通过定期跟踪这些KPI,您可以验证您的应用是否提供流畅、响应迅速的体验。

了解延迟和内存:

  • “延迟”衡量您的应用启动和变为可用状态的速度。用户期望应用几乎可以即时启动,并且在与内容交互之前的延迟很小。
  • “内存”衡量您的应用使用设备RAM的效率。过多的内存消耗会导致系统崩溃、多任务处理性能不佳和用户体验下降。

先决条件

在Fire OS上衡量应用KPI之前:

  1. 在开发计算机上安装以下软件程序包:
  2. 完成以下设置:
    • 为JAVA_HOME和ANDROID_HOME文件夹设置路径。
    • 在设备上启用开发者模式并启用USB调试。有关说明,请参阅在亚马逊Fire TV上启用调试
    • 使用以下命令捕获所连接设备的序列号:
        adb devices -l
      
  3. 阅读以下部分:

应用KPI指标和指导值

下表列出了在Fire OS上衡量Fire TV应用的KPI指标以及每个指标的建议指导值。这些指标衡量启动性能和内存效率。

KPI 单位 场景 描述 指导值
第一帧时间 (TTFF) 应用冷启动 衡量从应用启动到第一帧渲染的时间。从Atrace: AMS.startActivityAsUsereglSwapBuffersWithDamageKHR进行计算。 < 2.0秒
TTFF 应用热启动 衡量应用从后台移动到前台时显示其第一帧所花费的时间。 < 1.0秒
完全显示时间 (TTFD) 应用冷启动 衡量应用从启动到应用准备好进行用户交互所需的时间。需要reportFullyDrawn() < 10.0秒
TTFD 应用热启动 衡量应用从后台移动到前台后变得可以完全交互所需的时间。 < 2.0秒
前台内存 MB 前台应用(4K视频) 衡量激活和播放4K视频内容时的应用按比例分配共享库占用的内存 (PSS) 总量。 < 400MB
前台内存 MB 前台应用(1080P或更低) 衡量应用在使用1080P或更低分辨率内容时的PSS总量。 < 300MB
后台内存 MB 在后台中的应用 衡量应用播放内容10分钟并移至后台后的PSS总量。 < 100MB
eMMC写入 (FG) MB/小时 在前台中的应用 应用处于活动状态时写入eMMC存储空间的数据的平均速率。 < 50MB/小时
eMMC写入 (BG) MB/小时 在后台中的应用 应用处于后台时写入eMMC存储空间的数据的平均速率。 < 2MB/小时

启动场景

性能测试衡量两种类型的应用启动场景,以评估TTFF和TTFD:

  • 冷启动 - 当用户在强制停止应用进程或重启设备后启动应用时。系统必须将所有资源和依赖项加载到内存中。
  • 热启动 - 指用户将应用从后台(非活动状态)切换到前台(活动状态),并且内存中已有一些资源和依赖项。

完全绘制的标记

当您的应用变得可用于用户交互时,完全绘制的标记会发出信号。标记:

  • 表示您的应用何时完成其主要组件的加载。
  • 标记用户何时可以开始与您的应用进行交互。
  • 帮助衡量TTFD性能。

要实现,请在以下关键时刻调用Activity中的reportFullyDrawn()

  • 冷启动 - 加载初始数据并渲染主屏幕(登录页或主页)之后。
  • 热启动 - 当您的应用在前台运行后变得响应迅速时。

以下示例代码显示了如何添加完全绘制的标记。

已复制到剪贴板。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getWindow().getDecorView().post(() -> {
            reportFullyDrawn();
        });
    }
}

已复制到剪贴板。

class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.decorView.post { reportFullyDrawn() }
    }
}

使用ADB和Atrace衡量KPI

使用Android调试桥 (ADB) 和Atrace来衡量运行Fire OS的Fire TV设备上的每个KPI。

测试策略

测试期间您可使用应用启动器意图或Monkey工具多次进行应用的启动和强制停止。在每次迭代之间,捕获Atrace日志、执行导航操作、捕获计时器值并在强制停止之前捕获内存使用情况。

亚马逊建议运行以下最低迭代次数。

性能测试类别 最小迭代次数
延迟 - 第一帧时间 (TTFF) 50
准备好供使用 - 完全显示时间 (TTFD) 10
内存 5

要测试的设备

要了解各Fire OS版本的测试覆盖率,请在以下参考设备上进行测试。

Fire OS版本 参考设备
Fire OS 6 Fire TV Stick 4K (2018)
Fire OS 7 带语音遥控器的Fire TV Stick (2020)

冷启动KPI

冷启动KPI衡量应用在强制停止应用进程或重启设备后启动应用时的性能。

TTFF - 冷启动

  1. 强制停止应用:
     adb -s <DSN> shell am force-stop <程序包名称>
    
  2. Start Atrace:
     adb shell atrace -o /sdcard/atrace.capture -t 15 -b 32000 -a <package_name> gfx input am view wm
    
  3. 启动应用:
     adb -s <DSN> shell monkey --pct-syskeys 0 -p <程序包名称> -c android.intent.category.LEANBACK_LAUNCHER 1
    
  4. 等待30秒。
  5. 拉取Atrace日志:
     adb -s <DSN> pull /sdcard/atrace.capture ./atrace_cold_<迭代>.txt
    
  6. 计算时差:
    • 起始标记: AMS.startActivityAsUser
    • 结束标记:eglSwapBuffersWithDamageKHR
  7. 强制停止应用。
  8. 重复步骤1-7,进行50次迭代。

TTFD - 冷启动

遵循与TTFF - 冷启动相同的步骤,但要使用以下标记:

  • 起始标记: AMS.startActivityAsUser
  • 结束标记: Activity.reportFullyDrawn(匹配应用PID)

重复10次迭代。

热启动KPI

热启动KPI用于衡量应用从后台移至前台时的性能,其中一些资源已在内存中。

TTFF - 热启动

  1. 启动应用,然后按主页将其发送到后台。
  2. 启动Atrace。
  3. 使用Monkey工具启动应用(将其置于前台)。
  4. 等待30秒。
  5. 拉取Atrace日志。
  6. 计算时差:
    • 起始标记: AMS.startActivityAsUser
    • 结束标记:eglSwapBuffersWithDamageKHR
  7. 主页按钮将应用发送到后台。
  8. 重复步骤2-7,进行50次迭代。

TTFD - 热启动

遵循与TTFF热启动相同的步骤,但使用Activity.reportFullyDrawn作为结束标记。

重复10次迭代。

前台内存KPI

前台内存KPI会捕获应用在活跃运行和播放内容时的内存消耗。

  1. 下载、安装和登录应用(如果适用)。
  2. 强制停止应用。
  3. 使用Monkey工具启动应用。
  4. 播放视频内容10分钟。
  5. 等待120秒。
  6. 捕获前台内存:
     adb -s <DSN> shell dumpsys meminfo <程序包名称>
    
  7. 强制停止应用。
  8. 重复步骤2-7,进行5次迭代。

来自dumpsys meminfoPSS总量是主要指标。

后台内存KPI

后台内存KPI会捕获应用移至后台后的内存消耗。当RAM不足时,系统更有可能杀死后台内存使用率高的应用。

  1. 下载、安装和登录应用(如果适用)。
  2. 启动应用,播放视频内容10分钟。
  3. 主页按钮将应用发送到后台。
  4. 等待60秒。
  5. 捕获后台内存:
     adb -s <DSN> shell cat /proc/<PID>/statm
    
  6. 重复步骤2-5,进行5次迭代。

指导值摘要

下表汇总了每个KPI的建议指导值和测量迭代。

KPI 指导值 测量
TTFF冷启动 < 2.0秒 50次迭代
TTFF热启动 < 1.0秒 50次迭代
TTFD冷启动 < 10.0秒 10次迭代
TTFD热启动 < 2.0秒 10次迭代
前台内存 (4K) < 400MB 5次迭代
前台内存 (1080P) < 300MB 5次迭代
后台内存 < 100MB 5次迭代
eMMC 写入(前台) < 50MB/小时 连续
eMMC写入(后台) < 2MB/小时 连续

KPI健康状况评估

使用以下指示词来评估应用的KPI结果是否符合建议的指导值。

指示器 含义
通过 表示在建议指导值范围内
警告 在指导值的10%以内
失败 表示超过建议指导值10%以上。

工具

以下工具可以帮助您衡量和监控Fire TV设备上的应用KPI:

  • Android调试桥 (ADB) - 用于与Fire TV设备通信的命令行工具。
  • Atrace/Systrace - 用于捕获性能标记的系统跟踪实用工具。
  • Monkey工具 - 用于自动测试的应用启动器。
  • Appium - 测试自动化框架。
  • Maestro - 基于脚本的用户界面自动化,适用于内存/播放场景。
  • Android Studio Profiler - 实时CPU、内存和网络分析。
  • 应用运行状况洞察控制面板 - 用于跟踪上线应用指标的开发者控制台主信息页面。

Last updated: 2026年7月23日