开发人员控制台

Fire平板电脑上的Fire OS 6


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的行为变更和新功能

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中的所有功能。请记住不要在Amazon Fire平板电脑上使用Google服务。必须使用相应的应用和游戏服务开发工具包,才能实现所需的服务(例如应用内购买)。有关更多详细信息,请参阅从Google Play IAB v3.0迁移到Amazon IAP v2.0

主要新功能包括:

  • 适配存储
  • 低电耗/应用待机

适配存储

客户可以采用SD卡等外部存储设备。通过采用外部存储设备,可对设备进行加密和格式化,使其行为类似于内部存储。借助此功能,用户可在多台存储设备之间移动应用和这些应用的私有数据。适配存储可能会导致运行时的应用数据目录在外部存储上四处移动。

低电耗/应用待机

低电耗和应用待机能够在用户不使用设备时,强制设备进入休眠状态,旨在通过这种方式延长电池使用时间。此功能会对希望进行后台处理和轮询等的应用增加限制。

从应用清单中删除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平板电脑上的应用。

如果在清单中保留此标签,应用仍能在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清单

让您的应用适用于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, "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。

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