开发者控制台

开发运行Fire OS 6的Amazon Fire TV设备(Amazon Fire TV)


开发运行Fire OS 6的Amazon Fire TV设备(Amazon Fire TV)

运行Fire OS 6的Amazon Fire TV设备基于Android Nougat。遵从指南,确保您的应用与Fire OS 6兼容。

运行Fire OS 6的设备与运行Fire OS 5的设备的对比

大多数2018 Fire TV设备(Fire TV Stick 4K、Fire TV Edition Insignia和Toshiba、Fire TV Cube等)运行Fire OS 6。但是,一些较早的Fire TV设备仍在使用Fire OS 5(基于Lollipop或Android 5.1、级别22,以及部分向后移植的Marshmallow)。之前的Fire TV设备无法升级到Fire OS 6。

有关Fire TV设备和版本的详细列表,请参阅Fire OS版本

Android Nougat的行为变化和新功能

Android Nougat在Lollipop和Marshmallow的基础上做了一些修改。您在Fire OS 6设备上的应用须考虑这些修改。您可以在Android 7.0更改Android 6.0更改中查看这些修改信息。主要修改包括在运行时检查权限和链接到专用库。

运行时检查权限

同样,应用所需的正常和危险权限须在应用清单声明(通过uses-featureuses-permission元素)。但是,对于API级别23及以上的设备,须根据Android指南在运行时检查权限——参见使用系统权限(特别是在运行时请求权限)。

在运行时检查权限是Marshmallow(API级别23)中引入的一项功能,以简化安装和更新过程,让用户更好地管理应用。请注意,由于存在运行时权限,用户可在出现提示时撤销单个权限。您必须处理用户撤销权限的情景。

此外,如果您有一个面向多种设备(Fire平板电脑和Amazon Fire TV设备)的单个二进制文件,请不要在清单中为这些设备上不存在的功能请求权限(如在Fire TV应用上请求陀螺仪权限)。更多详细信息,请参阅处理不受支持的硬件功能

链接到专用库

Android Nougat不允许应用动态链接到非NDK或专用库。应用的APK中必须包含所有必需的库,或者使用公共NDK API。更多详细信息,请参阅直接从APK打开共享库专用API(对API级别>= 24强制执行)

Fire OS 6与Nougat的相同功能

Fire OS 6支持Android Nougat中的所有功能。Fire OS 6支持的Nougat电视特定功能包括:

  • 画中画(PiP): 允许用户在导航到应用中的其他区域时将视频固定到屏幕的一角。请注意,PIP窗口不能在应用外部使用,也不能与原Fire OS用户界面元素叠加。
  • 内容录制: 允许用户录制电视上的内容(类似于DVR)。
  • 时移API: 允许用户暂停、倒回或快进直播内容。

关于这些功能编码的详细信息和说明,请参阅Android文档。

虽然Fire OS 6与Nougat具有相同的功能,但您无法在Amazon Fire设备上使用谷歌服务。相反,针对所需的服务(例如:应用内购买),必须使用应用和游戏服务SDK。更多详细信息,请参阅Amazon Fire TV开发与Android TV开发

让您的应用适用于Fire OS 5和Fire OS 6设备

为了最大限度地与Fire OS 5和Fire OS 6功能兼容,您需要相应地定向设备。您可以用AFTN作为Build.Model来标识Fire TV第3代设备。但更有效的方式是确定SDK的级别。您可以检查代码中Build.VERSION.SDK_INT是否大于等于25(Nougat的API级别),以定向Fire OS 6设备。更多详细信息,请参阅识别Fire TV设备。另请参阅支持不同平台版本

在新的Amazon Fire TV设备上测试应用的兼容性

目前,无法测试您的应用是否与Fire OS 6设备兼容,除非您有一个真正的设备可以连接。应用测试服务仅提供极少的兼容性测试,不会通知应用是否与Fire OS 6设备兼容。但是,如果您通过标准应用提交流程提交应用,应用商店团队将指出应用失败的具体原因。到目前为止,与当前Amazon Fire TV设备兼容的应用也与新设备兼容。

从应用清单中删除uses-amzn-sdk

对于Fire OS 5和Fire OS 6设备,您应该从应用清单中删除<uses-amzn-sdk>标签。此标签与旧的Fire OS SDK附加程序相关。检查您是否在AndroidManifest.xml文件中声明了<uses-amzn-sdk>。如已声明,请删除此标签(以及代码中的所有依赖项)。该<uses-amzn-sdk>标签不再用于Amazon Fire TV上的应用。

虽然即使在清单中保留此标签,您的应用仍能在Fire OS 6设备上工作,但删除标签可以避免以后出现任何不兼容情况。开发Fire设备应用时,无需旧Fire OS SDK附加程序的任何组件。不过,请使用标准Android API亚马逊应用和游戏服务SDK

用旧版Unity开发的游戏应用

如果您有一个游戏应用是使用较旧版本的Unity开发的(例如Unity 4.5或4.6,其中UnityPlayerNativeActivity为默认活动),则在第一次加载到内存中时,您的游戏可能会出现1-2秒的白屏。这是由应用加载到内存(并等待所有工作完成)时Android N的冷启动导致的。此问题并非Fire OS 6特有,会在所有Nougat设备上发生。

要修复此问题,请升级到最新版本的Unity。如果无法升级,您可以尝试将UnityPlayerNativeActivity更改为UnityPlayerActivity(从Unity 5.0b12开始提供)来更新您的Android清单文件。有关更多信息,请参阅Unity文档中的Android清单

minSdkVersion和targetSdkVersion的设置

minSdkVersion设置为适用的Fire OS版本所需的最低API级别。

Fire OS版本 minSdkVersion
Fire OS 5 22
Fire OS 6 25
Fire OS 7 28

targetSdkVersion设置为测试应用时所用的最高API级别。

请参阅设备筛选和兼容性,以了解有关最低API级别要求的更多信息。

了解minSdkVersion如何影响支持的设备

在应用清单(或build.gradle文件)中,minSdkVersion属性设置了应用正常运行所需的最低SDK级别。(不支持该API级别的设备不应允许安装这一应用。)

Fire OS 5设备基于API级别22 (Lollipop 5.1)。Fire OS 6设备基于API级别25 (Nougat 7.1)。将minSdkVersion设置为22,即表示应用要求设备至少具有API级别22才能正常运行。

minSdkVersion设置为22时,还可在具有更高API级别(例如25)的设备中安装您的应用,因为Android级别向后兼容。API级别25通常包含级别1到级别25的所有API(每个版本都添加到上一个版本中)。

但假设您想利用Nougat中的API(API级别25)。若将minSdkVersion设置为22,则可以在没有API级别25的Fire OS 5设备中安装您的应用。因此,必须以防御方式进行编程,检查设备级别,若设备不支持该API级别,则回退到替代方案。代码可能如下所示:

if (Build.VERSION.SDK_INT >= 25) {
 Log.v(TAG, "Yes, this is an API level 25 or higher device(是,这台设备具备API级别25或更高版本)");
} else {
 Log.v(TAG, "No, this is not an API level 25 or higher device(不是,这台设备不具备API级别25或更高版本)");
}

此代码检查设备的API级别是否大于或等于25,如果是,则运行代码。如果不是,则回退到else逻辑。

默认情况下,若未指定targetSdkVersion,将使用与minSdkVersion相同的值。targetSdkVersion允许您设置应用测试所依据的最新API级别。基于该值,Android将确保此级别设备的性能正常。

例如,若将targetSdkVersion设置为23或更高版本(Marshmallow的版本),Android将应用Marshmallow中包含的运行时权限检查功能。但是,如果targetSdkVersion低于23(在Marshmallow中推出运行时权限检查之前),Android将不在您的应用中应用此行为。

在将targetSdkVersion设置为25前,须在Fire OS 6设备上测试您的应用。

不推荐使用maxSdkVersion属性,但如需让应用在Fire OS 5设备上可用,则可将maxSdkVersion设置为22。如需让应用在Fire OS 6设备上可用,可将minSdkVersion设置为25。

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

自定义媒体播放器的AV同步问题

AV同步是指视频不完全与音频同步(声音与口形不匹配)。如果您使用的是ExoPlayer或标准的Android媒体播放器,则不会遇到这一AV同步问题。但是,如果您在应用中使用自定义媒体播放器,音频和视频(AV)可能会稍有不同步。(此问题与Fire OS 6没有特别的关系,而是在为Fire OS设备开发应用时的一般最佳实践。) 关于如何消除AV同步问题的详细信息,请参阅[音频和视频同步][fire-tv/audio-video-synchronization]。

支持

若应用在Fire OS 6上存在问题,请在Amazon Fire TV和Fire TV Stick论坛中报告此问题。