安卓设备逐步升级Android 9,游戏产品该如何做适配?

来自 谷歌开发者 2018-12-17
资讯

[ 转载自 谷歌开发者 ]

安卓设备逐步升级Android 9,游戏产品该如何做适配?

今年8月,谷歌发布了Android 9的正式版系统Pie,一些品牌的安卓设备也开始陆续加入到版本更新的阵营之中。

由于谷歌方面发布Android 9的时间距今还不到半年,硬件厂商仍需要一些时间进行定制化设计,所以这个系统在国内市场的占有率仍有很大的提升空间。对于游戏厂商来说,尽早了解该系统的设计细节,有利于在未来的几年内推出表现效果更佳的产品。

从Android 9目前公布的设计细节来看,该系统添加了Wi-Fi RTT,可以用于室内定位。同时,Android 9借助ART运行时显著提高了应用的性能表现与运行效率,可以对应用进行优化,并减少已编译应用代码的内存占用量。这些细节设计的升级,均可以对游戏开发起到一定的帮助。

以下为Android 9 Pie的详细功能介绍。您也可以进入:

https://developer.android.google.cn/docs/android-9-handbooks?hl=zh-cn

下载Android 9 Pie 开发者手册,获得更多干货。

Android 9的新功能

以机器学习为核心,打造更为智能的手机

Android 9赋予手机强大的学习能力:系统能够根据用户在使用过程中展露的习惯与偏好,进行自我学习与适应——从强劲续航到人性化应用推荐,Android 9 都能保障持久流畅的用户体验。

动态电量管理

谷歌与DeepMind合作推出了动态电量管理特性,利用机器学习技术对系统资源进行有限分配,更专注于用户最常用的应用。如果您已经针对低耗电模式、应用待机模式以及后台限制对您的应用进行过相关优化,那么它就应该已经能够和动态电量管理特性完美配合。如果您暂时还未开始优化工作,请阅读电量管理官方文档,获取具体操作指南。

>> DeepMind链接
https://deepmind.com/

>> 动态电量管理
https://developer.android.google.cn/preview/features/power

>> 低耗电模式
https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_doze

>> 应用待机模式
https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_app_standby

>> 后台限制
https://developer.android.google.cn/about/versions/oreo/background

>> 电量管理官方文档
https://developer.android.google.cn/preview/features/power


02.jpg

Slices

Slices能够有效帮助用户节省操作时间,不需要通过全屏体验就能够使用应用的部分功能。借助配套的UI模板,Slices能够将应用内容以高动态、富交互的形式插入到多个使用场景中,比如Google Search和Assistant。请进一步了解如何在应用中构建Slices。

>>构建Slices
https://developer.android.google.cn/guide/slices/

03.png

App Actions

App Actions是一种全新的应用推荐方式。开发者可以利用这个功能,让更多人看到自己的应用并极大提高用户参与度。借助机器学习技术,App Actions能对应用的语义意图和使用场景进行分析,并根据分析结果在适当的时机向用户推荐您的应用。

04.gif

一旦应用启用该推荐功能后,系统就会根据用户请求,在众多Google和 Android交互入口推荐您的应用。

>> App Actions
http://developer.android.google.cn/guide/actions/

文本识别与Smart Linkify

在Android 9中,谷歌对识别文本的机器学习模型进行了扩展,使其可以借助 TextClassifierAPI识别出类似日期或航班号这样的信息。此外,Smart Linkify允许开发者通过Linkify API使用文本识别模块完成多项操作,比如对用户可采取的操作提出建议。Smart Linkify让系统在文本识别精确度与速度上都有明显的提升。

05.gif

>> TextClassifier API
https://developer.android.google.cn/reference/android/view/textclassifier/package-summary

>> Linkify API 
https://developer.android.google.cn/reference/android/text/util/Linkify

神经网络API 1.1

Android 9.0对神经网络API进行了扩展与改进,进一步优化Android对机器学习硬件加速的支持。神经网络API 1.1共增加了对9个新算子的支持,它们分别是 Pad、BatchToSpaceND、SpaceToBatchND、Transpose、Strided Slice、Mean、Div、Sub和Squeeze。TensorFlow Lite就是一个已经用上此API的典型机器学习框架。

>> 神经网络 API 1.1
https://developer.android.google.cn/ndk/guides/neuralnetworks/index.html

>> TensorFlow Lite
https://www.tensorflow.org/mobile/tflite/

让人机交互更加容易

Android 9大幅度改进了用户界面,让它更简洁,也更易于操作;对于开发者而言,这些变更能够让用户更加容易搜索,使用和管理您的应用。

全新系统导航

经过一年多的努力,Android 9迎来了全新的系统导航,让多任务切换及关联应用探索变得更加简单。您只需要向上滑动屏幕就可以全屏预览最近使用过的应用,轻触预览页后便可以切换至所选应用。

06.gif

凹口屏支持

Android 9中加入了凹口屏支持,让您的应用可以充分利用最新全面屏,展现应用的独特魅力。该功能可以在大部分应用中无缝工作,系统会通过调整状态栏高度将应用内容与屏幕缺口区域分开。如果您的应用含有沉浸式内容,您可调用display cutout APIs确认缺口形状与位置,然后请求围绕缺口进行全屏布局。另外,Android 9还加入了开发者选项来模拟任意设备上的凹口形状,从而极大简化了应用支持凹口屏幕所需的构建以及测试流程。

>> 凹口屏支持
https://developer.android.google.cn/guide/topics/display-cutout/

>> display cutout APIs

https://developer.android.google.cn/reference/android/view/DisplayCutout.html

07.jpg

△ 内含沉浸式内容的应用可以在凹口屏设备上实现全屏显示

通知与智能回复

Android 9进一步改善了通知的实用性与可操作性。消息类应用可以调用新的 MessagingStyle API来显示对话,附加照片和表情,或者提供智能回复建议。

08.jpg

△ 在MessagingStyle通知中,您可以显示对话和智能回复(左)或添加图片和表情(右)

>> MessagingStyle 
https://developer.android.google.cn/preview/features%23notifications

>> ML Kit
https://developers.google.com/ml-kit/

文本放大镜

Android 9中添加文字放大镜工具(Magnifier widget),以提升文本选择方面的用户体验。由于该放大器提供了可以在文本上方拖拽的文本放大面板,所以有助于用户精准地定位光标或文本选择手柄。该功能可以灵活运用在所有附加在窗口的视图上,个性化小部件和定制文本呈现均是不错的应用场景。而且,该放大器工具还可以提供任何视图或界面的放大版本,而不仅仅是文本。

>> 文字放大镜工具 (Magnifier widget)
https://developer.android.google.cn/reference/android/widget/Magnifier 

09.gif

请阅读《Android P中的新文本特性》,了解更多有关放大镜以及文本特性的相关信息,如Precomputed Text、行高以及基线文本对齐。

>> Precomputed Text
https://developer.android.google.cn/reference/android/text/PrecomputedText 

用户安全与隐私

统一身份验证对话框

生物传感器被广泛应用于身份认证,为了保障用户在不同感应器和应用间能够获得一致的体验,Android 9引入了统一的身份验证对话框,提示用户进行操作。应用不再需要自行设计对话框,而是通过调用BiometricPrompt API 触发系统对话框。除指纹识别以外(包括屏幕下指纹识别),该API还支持面部识别以及虹膜识别。

>> BiometricPrompt API
https://developer.android.google.cn/reference/android/hardware/biometrics/BiometricPrompt

10.jpg

若您的应用仍在使用自行设计的指纹识别对话框,我们建议您尽快转用 BiometricPrompt API。

高可信度用户确认

Android 9新增了高可信度用户确认(Android Protected Confirmation),该功能通过可信执行环境(TEE)确保提示文本被真实用户确认。只有在用户成功确认之后,TEE才会签发该文本,让应用进行后续验证步骤。

>> Android Protected Confirmation
https://developer.android.google.cn/preview/features/security#android-protected-confirmation

加强密钥安全保护

Android 9还加入了一个新的KeyStore 类——StrongBox,并提供相应的API来支持那些提供了防入侵硬件措施的设备,比如独立的CPU,内存以及安全存储。您可以在KeyGenParameterSpec里进行设置,决定是否把密钥交给 StrongBox 安全芯片来保存。

>> KeyStore
https://link.juejin.im?target=https%25253A%25252F%25252Fdeveloper.android.google.cn%25252Fpreview%25252F

>> KeyGenParameterSpec
https://developer.android.google.cn/reference/android/security/keystore/KeyGenParameterSpec

DNS over TLS

Android 9内置对DNS over TLS的支持:若网络DNS服务器提供支持,设备会自动将DNS查询升级为TLS查询。用户可以通过更改“网络和互联网”设置下的隐私 DNS(Private DNS)模式来管理DNS over TLS行为。自行运行DNS查询的应用可以通过调用新的 LinkProperties.isPrivateDnsActive() API来获取DNS模式相关信息。请阅读《Android P 开发者预览版支持DNS over TLS》,获取进一步信息。

默认使用HTTPS

为了将所有网络流量从明文(未加密的HTTP)逐步迁移至TLS,我们更改了网络安全配置的默认设置,以阻止所有明文流量,强制应用通过TLS建立网降连接,除非开发者明确允许特定域名使用明文传输。

>> 网络安全配置
https://developer.android.google.cn/training/articles/security-config.html

基于编译器的安全缓解措施

Android 9将进一步扩展编译器级别的安全缓解措施,借助运行时危险行为监测进一步加强平台安全建设。Android 9通过控制流程完整性(CFI)技术解决了代码重用(code-reuse)和任意代码执行两大漏洞,并扩展了CFI在媒体框架和其它关键安全组件内的使用范围,如NFC与蓝牙。同时,Android 9还针对Android常见内核的LLVM编译添加了CFI内核支持。

此外,Android 9还将整数溢出检查器(Integer overflow sanitizer)的使用范围扩展到其他库,以缓解内存损坏与信息泄露这两个问题。我们调高了检查器在以下两类库中的优先级:1) 存在历史漏洞,2) 需要处理复杂且不受信任的输入,如libui、libnl和libmediaplayerservice一类的库都在调整范围内。

用户隐私

Android 9新加入多项机制,进一步加强了对用户隐私的保护。系统禁止所有处于空闲状态的应用对话筒、摄像头和所有SensorManager传感器的访问。当应用的UID空闲时,麦克风将会报告“无音频信号”,传感器将会停止报告事件,应用使用的摄像头也会断开连接,并在应用试图访问时生成错误。在大多数情况下,这些限制不会对现有应用造成新的问题,但建议您从应用中移除此类传感器请求。

>> SensorManager
https://developer.android.google.cn/reference/android/hardware/SensorManager.html#getSensors()

Android 9还让用户控制是否允许访问平台build.serial识别码(它被 READ_PHONE_STATE 权限保护)。自Android 8.0以来,直接访问此识别码的功能已被弃用。您可以调用Build.getSerial()方法,访问build.serial识别码。

>> READ_PHONE_STATE
https://developer.android.google.cn/reference/android/Manifest.permission.html#READ_PHONE_STATE

>> Build.getSerial()
https://developer.android.google.cn/reference/android/os/Build.html#getSerial()

了解全部隐私变更:

https://developer.android.google.cn/about/versions/p/android-9.0-changes-all#privacy-changes-all

感官新体验: 摄像和影音的全面升级

多摄像头API以及其它改进

从Android 9开始,您可以在支持多摄像头API的设备上通过两个或更多实体摄像头同时访问视频流;在配有双前置或双后置摄像头的设备上,实现单摄像头无法实现的创新功能:如无缝变焦、散景和立体视觉。该API还允许您调用可以在两台或更多台摄像头之间自动切换的逻辑或混合摄像头视频流。

>> 两个或更多实体摄像头
https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA

摄像头的其他改进还包括:利用新的会话参数(Session parameters)来有效减少初始捕捉时的延迟,表面(Surface)共享技术让摄像头客户端无须重启视频流便可处理各种场景。此外,Android 9还加入了相关API,提供基于屏幕闪光灯支持及OIS时间戳的访问权限。

>> Session parameters
https://developer.android.google.cn/reference/android/hardware/camera2/params/SessionConfiguration.html

>> 闪光灯
https://developer.android.google.cn/reference/android/hardware/camera2/CameraMetadata.html#CONTROL_AE_MODE_ON_EXTERNAL_FLASH

>> OIS 时间戳
https://developer.android.google.cn/reference/android/hardware/camera2/CaptureResult.html#STATISTICS_OIS_TIMESTAMPS

HDR VP9 视频以及HEIF图像

Android 9增加了对HDR VP9 Profile 2的内置支持。现在,您可以在支持HDR 的设备上,把启用HDR功能的视频内容分享给您的用户。

另外,它还在添加了对HEIF(heic)图像编码的平台支持。HEIF是目前比较流行的一种的压缩格式,它改善了图片的压缩效果,并减少了图片的储存空间以及网络流量。引入平台支持后,开发者能更加方便地从后台服务器传输并使用 HEIF图像。一旦确定您的应用与该数据格式兼容,可用于分享或者显示,不妨尝试将HEIF设定为应用内图片的储存格式。此外,您还可以通过 ImageDecoder将jpeg文件转化为heic文件,或通过Bitmap Factory从jpeg文件中获取位图。您亦可使用AndroidX库中的HeifWriter从YUV字节缓冲区、Surface以及位图中写入HEIF静态图像。

>> HEIF
https://developer.android.google.cn/reference/android/media/MediaFormat.html#MIMETYPE_IMAGE_ANDROID_HEIC

>> HeifWriter
https://developer.android.google.cn/reference/androidx/heifwriter/HeifWriter.html

使用动态处理增强音频

开发者可以调用Dynamics Processing API对音频进行动态处理,通过分离出特定频率的声音,降低过大的音量,或者增强过小的音量,来改善应用的音频质量。比如说,即便说话者声音小,离麦克风远,而且外界环境十分嘈杂,您的应用依然可以有效捕捉并他/她的声音,并进行相应优化。该API提供了多声场、多频段的动态处理效果,包括一个预均衡器、一个多频段压缩器,一个后均衡器以及一个串联的音量限制器。

>> Dynamics Processing API 
https://developer.android.google.cn/reference/android/media/audiofx/DynamicsProcessing

11.jpg

用于位图和drawable的ImageDecoder

ImageDecoder API让开发者可以通过一种更为简单的方式将图像解码为位图或 drawable。ImageDecoder允许您从字节缓冲区、文件或URI创建位图或 drawable。它相比BitmapFactory有以下几个优势:支持精确缩放,支持单步解码至硬件存储器,支持解码后处理,以及动画图像解码。请获取进一步信息:https://developer.android.google.cn/preview/features#decoding-images

>> ImageDecoder 
https://developer.android.google.cn/reference/android/graphics/ImageDecoder

网络连接与位置

使用Wi-Fi RTT,进行室内定位

Android 9为IEEE 802.11mc Wi-Fi协议添加了平台支持(也称为Wi-Fi往返时间,RTT),这可以让您在应用中使用室内定位功能。在提供硬件支持的Android 9设备上,在启动位置服务并勾选“允许获取地理位置信息”选项后,应用就可以使用 RTT API 测量与附近Wi-Fi接入点 (AP) 的距离。设备不需要连接到AP便可以使用 RTT,而且为了保护隐私,只有手机能够确定距离,而AP不可以。

>> RTT APIs
https://developer.android.google.cn/reference/android/net/wifi/rtt/package-summary.html

12.jpg

通过测量从设备到三个或更多AP的距离,您可以计算设备位置至1到2米的精度。这种精确度允许您创建更多新的体验:室内导航、基于位置的细粒度服务,例如,模糊语音控制("打开这里的灯");以及基于位置的资讯服务("这个产品有优惠活动吗?")。

JobScheduler中的数据费用敏感度

JobScheduler是Android的一项核心服务,它可以帮助您针对低耗电模式、应用待机模式以及后台限制,妥善进行各种任务的调度。在Android 9中,JobScheduler可以更好地帮助用户处理与网络相关的任务,并与运营商单独提供的网络状态信号相协调。任务现在可以声明预估数据量、信号预取以及指定详细的网络要求——运营商可以报告网络状况是拥塞还是不计量,然后 JobScheduler会根据网络状态管理作业。例如,当网络拥塞时,JobScheduler 可能推迟大型网络请求;而在网络可以不计量使用时,则可以运行多种预加载作业(例如,预读标题)来改进用户体验。

>> JobScheduler 
https://developer.android.google.cn/reference/android/app/job/JobScheduler.html

>> 低耗电模式
https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_doze

>> 应用待机模式
https://developer.android.google.cn/training/monitoring-device-state/doze-standby#understand_app_standby

>> 后台限制
https://developer.android.google.cn/about/versions/oreo/background

用于NFC支付和安全交易的Open Mobile API

Android 9将GlobalPlatform Open Mobile AP的实现添加至平台中。在支持的设备上,应用可以使用OMAPI API访问安全元素(SE),以启用智能卡支付等安全服务。硬件抽象层(HAL)提供了必要的API,用于枚举多种可用的Secure Elements (如eSE, UICC等)。

>> GlobalPlatform Open Mobile API
https://www.globalplatform.org/

>> OMAPI API
https://developer.android.google.cn/reference/android/se/omapi/package-summary.html

更强劲的性能表现

ART性能提升

Android 9借助ART运行时显著提高了应用的性能表现与运行效率。我们扩展了ART对执行特征的使用,以优化应用并减少已编译应用代码的内存占用量。ART现可使用特征文件信息在设备上重写DEX文件,帮助多个常见应用的内存占用减少高达11%。谷歌期望借此减少系统DEX内存使用量并加快应用启动时间。

Kotlin优化

Kotlin是Android开发的一等编程语言,谷歌在Kotlin性能方面进行了长期资源投入和持续支持,优化了Kotlin代码性能。在Android 9中,它已经改进了一些编译器优化,尤其是那些针对循环的编译器优化,以实现更好的性能。谷歌还将继续与JetBrains合作,优化Kotlin生成的代码。只需保持更新Android Studio上的 Kotlin插件,就能获得所有最新的Kotlin性能更新。

>> Kotlin
https://developer.android.google.cn/kotlin/index.html

现代化的Android

谷歌在去年就已经宣布过 Google Play 将要求所有应用在2018年11月之前针对 Android Oreo(targetSdkVersion 26或更高)进行更新。因此,若您的应用目标平台版本早于 Android 4.2 (API等级17),用户在安装您的应用时,系统会弹出警告对话框。请阅读迁移指南相关文档。

>> targetSdkVersion
https://developer.android.googl.cn/guide/topics/manifest/uses-sdk-element.html#target

>> 迁移指南
https://developer.android.google.cn/distribute/best-practices/develop/target-sdk.html

简单几步,即可上手

自Android 9正式发布开始,安卓设备均会陆续收到更新推送,因此有必要尽早将应用适配这个版本的系统。您只需在 Android 9 Beta 设备或者模拟器上使用 Google Play 安装您目前的应用并进行测试,请确保您的应用在测试过程中运行流畅,界面美观,并能够妥善处理 Android 9 的各项行为变更。

>> Android 9 Beta设备
https://developer.android.google.cn/preview/devices

>> 模拟器
https://developer.android.google.cn/studio/run/managing-avds.html

>> Android 9行为变更
https://developer.android.google.cn/preview/behavior-changes


13.jpg

同时,请您留心应用调用非 SDK 接口的情况。Android 9 限制了一些特定非 SDK 接口的访问权限,因此您需要减少应用对这些接口的依赖。请阅读《后续更新 | 减少使用非 SDK 接口以提升稳定性》,了解详细信息。


在完成必要更新之后,谷歌建议您立即将应用发布至 Google Play,暂时无需更改应用的目标平台版本。这能帮助您在保障用户体验的同时,继续利用 Android 9 API 优化应用性能并将其逐步迁移至目标平台。

利用 Android 9 特性和 API,进一步优化您的应用

当您准备就绪后,请尽情探索Android 9,并利用新特性与API让您的应用臻于完美。

>> 新特性与 API 
https://developer.android.google.cn/preview/api-overview.html

首先,请将官方版 API 28 SDK 、最新的开发工具与映像文件下载至 Android Studio 3.1,或者使用 Android Studio 3.2 最新版本,然后将项目的 compileSdkVersion 和 targetSdkVersion 更新至 API 28。在更改完目标平台版本之后,请确保您的应用支持所有的行为变更。

>> Android Studio 3.2 最新版本
https://developer.android.google.cn/preview/setup-sdk.html#get-studio

在您准备好后,请将 APK 更新发布至 Google Play。我们建议您使用 Google Play 中的 beta 测试功能,先获取一小部分用户的早期反馈,然后再逐渐进行全量发布。

>> Google Play 中的beta测试功能
https://developer.android.google.cn/distribute/engage/beta.html?utm_campaign=android_launch_npreview_061516&utm_source=anddev&utm_medium=blog

访问 Android 9 官方网站,阅读文档并获取更多相关信息。点击收看视频或者前往 Google I/O Android 播放列表,了解 Android 9 为开发者准备的精彩新亮点。

>> Android 9 官方网站
https://developer.android.google.cn/preview/index.html

>> Google I/O Android 播放列表
https://www.youtube.com/watch?v=Hzv5-R9XLTc&list=PLWz5rJ2EKKc9Gq6FEnSXClhYkWAStbwlC

即刻升级设备,体验 Android 9

从8月开始,Pixel 设备已陆续获取到Android 9的更新推送。

其它加入Beta项目的设备,如 Sony、小米、HMD、Oppo、Vivo、一加和 Essential 以及所有符合要求的Android One设备也会陆续收到更新推送。

此外,适用于Pixel设备的系统映像现可供下载

 (https://developers.google.com/android/images),支持手动刷机。

请前往 Android 开源项目资源库中的 Android 9板块,获取更多 Android 9的相关资源。

>> Android 开源项目
https://source.android.com/

如果您遇到任何有关 Android 9的问题,请通过AOSP反馈功能提交新的错误报告。

>> 提交错误报告

https://issuetracker.google.com/issues/new?component=190923&template=841312 

如有更多问题,也可致电Google服务小组 400-810-0838 (手机拨打)/400-990-9020(座机拨打),联系您的Google专家。

文章评论
游戏葡萄订阅号