开发运行Fire OS 6的Amazon Fire TV设备(Amazon Fire TV)
运行Fire OS 6的亚马逊Fire TV设备是基于Android Nougat。遵从指南,确保您的应用与Fire OS 6兼容。
- 运行Fire OS 6的设备与运行Fire OS 5的设备的对比
- Android Nougat的行为变化和新功能
- Fire OS 6与Nougat的相同功能
- 让您的应用适用于Fire OS 5和Fire OS 6设备
- 在新的亚马逊Fire TV设备上测试应用的兼容性
- 从应用清单中删除uses-amzn-sdk
- 用旧版Unity开发的游戏应用
- minSdkVersion和targetSdkVersion的设置
- 了解minSdkVersion如何影响支持的设备
- 自定义媒体播放器的AV同步问题
- 支持
运行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-feature
和uses-permission
元素)。但是,对于API级别23及以上的设备,须根据Android指南在运行时检查权限——参见使用系统权限(特别是在运行时请求权限)。
在运行时检查权限是Marshmallow(API级别23)中引入的一项功能,以简化安装和更新过程,让用户更好地管理应用。请注意,由于存在运行时权限,用户可在出现提示时撤销单个权限。您必须能够应对用户撤销权限的情况。
此外,如果您有一个面向多种设备(Fire平板电脑和亚马逊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设备上使用Google服务。相反,必须针对所需的服务(例如:应用内购买)使用应用和游戏服务开发工具包。更多详细信息,请参阅亚马逊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设备。另请参阅支持不同平台版本。
在新的亚马逊Fire TV设备上测试应用的兼容性
目前,除非连接到真正的设备,否则无法测试您的应用是否与Fire OS 6设备兼容。但是,如果您通过标准应用提交流程提交应用,亚马逊应用商店团队将指出应用失败的具体原因。到目前为止,与当前亚马逊Fire TV设备兼容的应用也与新设备兼容。
从应用清单中删除uses-amzn-sdk
对于Fire OS 5和Fire OS 6设备,您应该从应用清单中删除<uses-amzn-sdk>
标签。此标签与旧Fire OS SDK附加程序相关。检查您是否在AndroidManifest.xml文件中声明了<uses-amzn-sdk>
。如已声明,请删除此标签(以及代码中的所有依赖项)。亚马逊Fire TV上的应用已不再使用<uses-amzn-sdk>
标签。
虽然即使在清单中保留此标签,您的应用仍能在Fire OS 6设备上工作,但删除标签可以避免以后出现任何不兼容情况。开发Fire设备应用时,无需旧Fire OS SDK附加程序的任何组件。不过,请使用标准Android API和亚马逊应用和游戏服务开发工具包。
用旧版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, "是,这台设备具备API级别25或更高版本");
} else {
Log.v(TAG, "不是,这台设备不具备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同步问题的详细信息,请参阅“Android应用中的AV同步”。
支持
如果应用在Fire OS 6上存在问题,请在亚马逊Fire TV和Fire TV Stick论坛中报告该问题。
Last updated: 2021年6月7日