未找到任何结果

尝试其他或更具体的查询
开发者控制台

Fire平板电脑上的Fire OS 8

Fire平板电脑上的Fire OS 8

Fire OS 8引入了Android 10 (API 29)和Android 11 (API 30)的更新。在为Fire OS 8构建应用时,应该对这方面的重要变更予以考虑,下面介绍了其中一些变更。

Android 10更新

以下是Android 10开发者应该了解的重要功能列表。有关更多详细信息,请参阅Android 10功能和API

默认启用了TLS 1.3支持

Fire OS 8增加了对TLS 1.3的支持,默认情况下,它对所有TLS连接都启用。我们建议更新应用以支持TLS 1.3。如果需要使用较旧的TLS协议,可以通过以下调用来获得禁用了TLS 1.3的SSLContext

SSLContext.getInstance("TLSv1.2")

在应用内引用设置面板

Android 10中引入了设置面板,这是一种API,允许应用在其上下文中向用户显示设置。

Fire OS 8添加了设置面板API,允许直接在应用的上下文中显示关键系统设置,让用户无需离开应用就能访问多项系统设置,包括音量、互联网连接选项和WiFi控件等。

设置面板可采用以下常量:

  • ACTION_INTERNET_CONNECTIVITY显示与互联网连接相关的设置,例如飞行模式和WiFi。
  • ACTION_WIFI显示Wi-Fi设置的控件。这对于需要Wi-Fi连接来执行大规模上传或下载的应用非常有用。
  • ACTION_VOLUME显示所有音量流的设置。

共享方面的改进

Fire OS 8在共享方面有几项改进:

  • Fire OS 8引入了对共享快捷方式API的支持,此类API允许应用提前发布直接共享目标。如果应用使用直接共享API来定义目标,则需要迁移到共享快捷方式API,因为API 30已弃用ChooserTargetService类。使用AndroidX库中提供的ShortcutManagerCompat类将共享快捷方式API加入进来,并实施ChooserTargetServiceCompat以确保向后兼容。
  • 仅可将动态快捷方式发布为直接共享目标。请参阅发布直接共享目标

用于访问位置的前台服务类型

如果应用以Fire OS 8(API级别29)或更高版本为目标,并且会访问前台服务中的位置信息,请将location前台服务类型声明为<service>组件的属性。

<manifest>
    ...    <service ... *android:foregroundServiceType="location"* /></manifest>
前台服务类型 应声明此类型的服务的示例用例
dataSync 从网络下载文件
location 继续用户发起的操作
mediaPlayback 播放音频书籍、播客或音乐
mediaProjection 在短时间内录制设备显示画面的视频

您应当将foregroundServiceType添加至库清单。

在后台访问设备位置

以API 29或更高版本为目标的应用在后台无法访问位置信息。要在应用位于后台时接收位置信息,必须在应用清单中声明ACCESS_BACKGROUND_LOCATION权限。

<manifest ... >  

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

</manifest>

对于从后台启动活动的限制

从Android 10开始,系统对于从后台启动活动加以限制。这种行为改变有助于最大限度减少对用户的干扰,并让用户对其屏幕上显示的内容保持更大控制权。只要应用将用户交互作为启动活动的直接原因,就很可能不会受到这些限制的影响。

高效率图像文件(HEIF)格式

Fire OS 8平板电脑现已提供对HEIF图像格式的原生支持。如果您的应用使用静态图像,请考虑添加对HEIF格式的支持。与JPEG文件格式相比,它可以提供更好的图像质量和更小的文件大小。

深色主题

Android 10增加了一个系统范围的深色主题。您可以为应用构建自定义深色主题,也可选择加入全新Force Dark功能,让系统根据现有主题动态创建深色版本。

<style name="AppTheme" parent="Theme.AppCompat.DayNight">

有关更多详细信息,请参阅Android 10功能和API

Android 11更新

现在需要APK签名方案v2

以Fire OS 8 (API 30)为目标的应用当前仅使用APK签名方案v1进行签名,现在还必须使用APK签名方案v2对APK进行签名。在仅使用APK签名方案v1签名的Fire OS 8设备上,用户将无法安装或更新应用。为确保支持在较旧Fire OS版本上运行的设备,应该先使用v1,然后使用v2或更高版本对APK进行签名。

可以通过apksigner检查您在APK上使用的签名版本。

apksigner verify -v <apkname.apk>

单次授权

从Fire OS 8(以API 30为目标)开始,每当应用请求与位置、麦克风或相机相关的权限时,面向用户的权限对话框都包含一个称为“单次授权”的选项。如果用户在对话框中选择此选项,则会对应用授予临时权限。请遵循运行时检查和请求权限的最佳实践,以确保您拥有必要的权限。

程序包可见性

默认情况下,以Fire OS 8(API级别30)为目标的应用会看到过滤后的已安装应用列表。要想访问更广泛的已安装应用列表,应用可以指定其需要查询和直接与之交互的应用的信息。这可以通过在Android清单中添加一个<queries>元素来实现。

<manifest package="com.yourapp.name"><queries>

// 如果知道需要与之交互的应用程序包名称

    <package android:name="com.anotherapp.firstapp" />
    <package android:name="com.someapp.secondapp" />


// 如果要查询具有特定意图的所有应用

    <intent>
      <action android:name="android.intent.action.SEND" />
      <data android:mimeType="image/jpeg" />
    </intent>

  </queries></manifest>

用于访问相机和麦克风的前台服务

如果应用的目标API级别为30或更高,并且会访问前台服务中的相机或麦克风,请分别声明cameramicrophone前台服务类型,作为<service>组件的属性。

<manifest>
    ...
    <service ...
        android:foregroundServiceType="camera|microphone" />
</manifest>

压缩资源文件

如果包含压缩resources.arsc文件,或者如果此文件未在4字节边界上对齐,则无法安装以Android 11(API级别30)或更高版本为目标的应用。请检查压缩对齐日志,确保在出现错误时未压缩resources.arsc文件。

Failure [-124: Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary]

动态意图过滤器

现在,要接收意图,应用必须声明可以通过应用清单中的意图过滤器接收哪些数据类型。这些称为MIME组,是Android 11中引入的清单元素。要使用MIME组,请在应用清单中包含一个具有android:mimeGroup属性的数据元素。

阻止来自后台的自定义toast

现已阻止包含从后台发送的自定义视图的toast。但是,在使用Toast.makeText()而非已弃用的setView()时,仍然允许文本toast。

Fire OS 8与Android 11对等

Fire OS 8实现的所有功能都与Android 11的功能对等,这并不意味着Android 11的所有功能在Fire OS 8中都可用。Fire OS 8尚不支持Android 11的部分功能,如基于文件的加密(FBE)。

另请记住,虽然Fire OS 8与Android 11对等,但在Amazon Fire设备上无法使用Google服务。必须使用相应的应用和游戏服务开发工具包,才能实现所需的服务(如应用内购买)。

让应用以Fire OS 8设备为目标

用户可能会在Fire OS 5、Fire OS 6、Fire OS 7或Fire OS 8设备上运行应用。为了最大限度提高应用与设备上Fire OS版本的兼容性,建议根据SDK级别确定目标设备。

在代码中,可检查Build.VERSION.SDK_INT是否大于等于30(Android 11 API级别),以便将Fire OS 8设备作为目标。

另请参阅Android文档中的支持不同平台版本

在Fire OS 8设备上测试应用的兼容性

可通过连接到实际设备,测试应用与Fire OS 8的兼容性。应用程序测试服务仅提供极少的兼容性测试,不会通知应用是否与Fire OS 8设备兼容。

minSdkVersion和targetSdkVersion的设置

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

Fire OS版本 minSdkVersion
Fire OS 5 22
Fire OS 7 28
Fire OS 8 30

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

minSdkVersion对支持的设备有何影响

在应用清单(或build.gradle文件)中,minSdkVersion属性设置了应用正常运行所需的最低SDK级别。(不支持该API级别的设备将不允许在该设备上安装应用 — 这是应用商店设备筛选和兼容性的工作方式。)

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

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

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

if (Build.VERSION.SDK_INT >= 30) {
 Log.v(TAG, "是,这台设备具备API级别30或更高版本");
} else {
 Log.v(TAG, "不是,这台设备不具备API级别30或更高版本");
}

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

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

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

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

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

支持

若应用在Fire OS 8上存在问题,请利用Fire平板电脑论坛来报告。