Fire平板电脑上的Fire OS 6
Fire HD 8 (2018) 平板电脑运行Fire OS 6。请按照以下指南,让应用做好与Fire OS 6兼容的准备。Fire OS 6基于Android Nougat(Android 7.1.2,级别25)。
- Android Nougat的行为变更和新功能
- Fire OS 6与Nougat的相同功能
- 从应用清单中删除uses-amzn-sdk
- 用Unity的较旧版本开发的游戏应用
- 让您的应用适用于Fire OS 5和Fire OS 6设备
- minSdkVersion和targetSdkVersion的设置
- 了解minSdkVersion如何影响支持的设备
- 关于自动备份
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中的所有功能。请记住不要在Amazon Fire平板电脑上使用Google服务。相反,针对所需的服务(例如:应用内购买),必须使用应用和游戏服务开发工具包。有关更多详细信息,请参阅从Google Play Billing迁移。
主要新功能包括:
- 适配存储
- 低电耗/应用待机
适配存储
客户可以采用SD卡等外部存储设备。通过采用外部存储设备,可对设备进行加密和格式化,使其行为类似于内部存储。借助此功能,用户可在多台存储设备之间移动应用和这些应用的私有数据。适配存储可能会导致运行时的应用数据目录在外部存储上四处移动。
低电耗/应用待机
低电耗和应用待机能够在用户不使用设备时,强制设备进入休眠状态,旨在通过这种方式延长电池使用时间。此功能会对希望执行后台处理和轮询等操作的应用增加限制。
从应用清单中删除uses-amzn-sdk
对于Fire OS 5和Fire OS 6设备,您应该从应用清单中删除<uses-amzn-sdk>
标签。此标签与旧Fire OS SDK附加程序相关。检查您是否在AndroidManifest.xml文件中声明了<uses-amzn-sdk>
。如已声明,请删除此标签(以及代码中的所有依赖项)。<uses-amzn-sdk>
标签不再用于亚马逊Fire TV或Fire平板电脑上的应用。
如果在清单中保留此标签,应用仍能在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清单。
让您的应用适用于Fire OS 5和Fire OS 6设备
为了最大限度地与Fire OS 5和Fire OS 6的功能兼容,需要相应地确定目标设备。在代码中,可检查Build.VERSION.SDK_INT
是否大于等于25
(Nougat的API级别),以将Fire OS 6设备确定为目标设备。请参阅支持不同平台版本。
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设备上测试您的应用。
尽管不建议采取这一做法,但如果需要防止较早版本的应用出现在Fire OS 6设备上,可以将maxSdkVersion
设置为Fire OS 5 (22)。
有关更多信息,请参阅以下内容:
关于自动备份
自动备份功能在Fire OS 6 (API 25) Fire平板电脑上不可用。
Last updated: 2024年3月15日