本文概述
- 1.新的JIT编译器, 配置文件引导的编译
- 2.多窗口支持
- 3. Vulkan API
- 4.直接启动
- 5.直接回复和捆绑通知
- 6.白日梦虚拟现实
- 7.用户界面, 可访问性调整和背景优化
- Android 7.0:底线是什么?
这听上去像是我的狡猾宠物, 但Android碎片化并不是开玩笑。多年来, 这一直困扰着用户和开发人员。 Android 7.0无法解决该问题, 这很可惜, 因为它启用了用户肯定会喜欢的许多新功能和性能改进。
但是, 开发人员不应抱有希望。这里没有任何改变游戏规则的人。让我们看一下Android幕后的主要调整, 以及它们带来的新机遇, 从影响最大到影响最小的方面。
- 新的JIT编译器, 是ART现有AOT编译器的补充
- 多窗口支持
- 支持Vulkan API
- 直接启动
- 直接回复和捆绑通知
- 白日梦虚拟现实(VR)模式
- 用户界面, 辅助功能调整和后台优化
1.新的JIT编译器, 配置文件引导的编译 JIT编译又回来了, 虽然听起来像是回到Dalvik时代, 但事实并非如此。这次, Google向ART添加了具有代码配置文件的JIT编译器, 以补充ART现有的AOT编译器。概要文件指导的编译是当今的流行语。
用户的一大收益:过去需要几分钟才能安装的大型应用程序现在只需几秒钟。
ART为每个应用程序的常用方法和各种设备条件创建一个配置文件。它可以预编译热门方法, 以提供最佳性能, 减少RAM使用量, 降低功耗等。
文章图片
Android 7.0:新功能, 性能提升以及你不需要关心的其他内容。
鸣叫
另一个好处是安装和更新的速度非常快。由于剖析意味着没有优化步骤, 因此Google甚至声称大型应用程序(在Android 6.0上花了几分钟安装时间)现在可以在几秒钟内安装或更新。就个人而言, 我希望这也适用于《战车世界:闪电战》, 因为这是值得我度过的唯一Android游戏。
在过去的几年中, 移动存储已经取得了很大的进步。许多当前的设备使用快速的UFS 2.0存储, 与过去的eMMC存储相比, 它可以显着提高性能。 Android 7.0应该使软件工程师能够充分利用这一新的存储标准, 并获得更高的性能。
查阅我以前的一篇博客文章, 详细了解Google的编译器计划对Android开发者的意义。
对开发人员的影响:以配置文件为导向的编译应可实现卓越的性能和效率。安装和更新将更快, 而且, 由于有了Google大量的文档, 实施起来应该相对容易。少等待大家。这是一件好事。
2.多窗口支持 等一下-我们是否已经在Android上看到了多窗口功能?是的, 没有;一些fork提供了多窗口支持, 但现在它是本机的。有两种分屏实现:并排和一个以上。对于移动设备, 这或多或少是标准的, 但是很遗憾, 我还没有机会尝试一下。
文章图片
而且, 老实说, 我从来都不喜欢移动设备上的多窗口功能, 因为大多数用户根本不需要它。
但是, 不仅是智能手机。 Google还在悄悄地开发智能电视产品, 因此多窗口支持也将扩展到这些设备, 但会有所不同。随着更多的显示空间可供使用, 应用程序构建者将能够在电视上使用画中画模式, 并且某些功能将取决于供应商。供应商将能够决定是否启用自由格式模式。这意味着超大型平板手机, 平板电脑和其他具有大尺寸显示屏的设备的供应商可能会允许用户在窗口的大小和位置上玩耍, 这听起来像是微软最初在Windows 8.x上实现的方法。
对开发人员的影响:多窗口支持不会改变游戏规则, 但它将立即为Android平板电脑和智能电视提供机会, 后者还将获得画中画和录制视频的功能。问题? Android电视不是很常见, Android平板电脑也从未普及过, 尤其是在涉及多窗口支持的生产力应用程序方面尤其如此。
谁知道呢?也许一个非常聪明的开发人员将创建一个利用它的杀手级智能手机应用程序。我不会屏住呼吸。
3. Vulkan API 这是引擎盖下的另一个潜在强大更新。当然, 它不会像花哨的功能那样引起媒体和消费者的兴趣, 但请不要误解:Vulkan API确实很重要。
如果你错过了它, Vulkan API是一种用于图形处理单元(GPU)的, 新的, 开销小的, 接近金属的API。不仅适用于3D游戏, 还适用于GPU计算。基本上, 这是OpenGL的后续产品, 应该能够在多线程处理器上实现出色的性能以及跨平台兼容性。它还可以节省成千上万的驾驶员开发工时。
那么为什么它没有更多嗡嗡声呢?嗯, 这是一个新标准, 引入一个全新的图形API通常需要几年的时间。这就是为什么消费者不在乎的原因, 也是Android开发人员应该在乎的原因。
现在, 我们等待……Vulkan API支持现在可能似乎并不重要, 但是几年后它将变得非常重要。
要了解有关在Android 7.0中实施Vulkan的更多信息, 请阅读我今年早些时候撰写的Vulkan API完整概述, 或查看Google的开发资源。
对开发人员的影响:Vulkan API的时机到了。它将减少CPU开销, 从而提高GPU性能并降低3D游戏的功耗。但是, 采用的速度一定会很慢, 因为我们正在谈论的是一种非常有效和复杂的图形API, 而不仅仅是外观上的调整。
4.直接启动 锁定的Android 7.0设备会如何处理?它以安全的直接启动模式运行, 直到用户解锁设备为止。
为了实现这一点, Android 7.0具有两个数据存储位置, 以及两个不同的加密解决方案:
- 设备加密存储可直接启动, 并且无论设备是锁定还是未锁定都可以访问。
- 凭据加密存储仍然是默认位置, 只有在用户解锁设备后才能使用。
这应该包括传递重要或预定通知的应用程序, 例如消息传递和日历应用程序。需要访问存储的应用程序必须依靠设备加密的存储, 该设备受密钥保护, 该密钥在设备执行经过验证的启动后才可用。访问权限不扩展到与用户凭证关联的数据, 即PIN和密码。凭据加密存储只有在设备启动并由用户解锁后才可用, 但是一旦被访问, 它将一直可用直到设备掉电为止。
对开发人员的影响:直接启动应该在不损害用户体验和响应能力的情况下提高安全性。实施应该简单明了, 但是在某些情况下, 它将涉及大量繁琐的工作。尽管如此, 这听起来还是增加安全性的一个小折衷。
5.直接回复和捆绑通知 听起来好像与直接启动有关, 但是直接回复是另一种野兽, 它使用户可以从通知屏幕中回复消息和通知。可以通过通知中的新按钮执行内联回复操作。实际上, 用户应该能够在不访问应用程序的情况下回复通知, 并且系统将处理其他所有事情。
文章图片
只有当开发人员花时间通过调用getResultsFromIntent()来启用内联回复检索时, 该系统才能发挥其魔力, 该方法返回带有所需文本响应的捆绑包。借助Android 7.0, Google为开发人员提供了一种表示排队通知的新方法:捆绑式通知。该解决方案类似于Android Wear上的通知堆栈。
捆绑的通知就是这样:在一个组中呈现相似的消息, 具有清晰的层次结构, 并且父通知位于顶部。然后, 用户可以扩展捆绑软件以访问更多信息并采取适当的措施, 或者在不感兴趣的情况下轻松撤消所有内容。
但是, 捆绑通知并不意味着可以与所有类型的通知一起使用。 Google在Android通知最佳做法中明确了这一点。理想情况下, 该方法应用于生成大量相似或相关通知的应用程序, 例如消息传递应用程序。
从Android 7.0(API级别24)开始, 用户可以直接在通知对话框中响应文本消息或更新任务列表。在掌上电脑上, 内联回复操作显示为通知中显示的其他按钮。当用户通过键盘回复时, 系统会将文本回复附加到你指定的意图(用于通知操作), 并将其发送到你的手持式应用程序。
对开发人员的影响:在许多情况下, 直接答复和捆绑的通知应改善用户体验。从Google的文档来看, 实施起来也不难。显然, 电子邮件, 消息传递和社交应用程序将从内联回复中获得最大收益, 尽管该方法可以在其他地方实现。
6.白日梦虚拟现实 Google最近对VR的关注证明了这家搜索巨头并非无法幸免。我们所有人都记得Google Cardboard和Google Glass, 这在增强现实领域是一个注定失败的裂缝。
与Glass不同, Cardboard不仅会枯萎而死, 但它仍然比实际产品更具实验性。 Google改进了这个概念, 并将在几周后重新发布, 并改名为Google Daydream。白日梦或多或少是一个进化的步骤。它看起来像经过调整的Cardboard耳机, 但是很难发现实质性的变化。
Android 7.0上的虚拟现实将令人失望。不是因为没有这种技术, 而是因为没有好的内容。
下一代Android手机将很快提供支持, 但设计人员和开发人员可以在当前的Nexus 6P(目前唯一兼容Daydream的设备)上测试其概念。
Google将Daydream描述为下一代移动VR解决方案, 与Cardboard相比, 具有更高的交互性和更好的响应能力。该公司表示, 已在Android堆栈的各个级别进行了改进, 以提高响应速度。这应该允许Android 7.0更快地访问传感器数据, 并在正确的时间渲染适当的VR场景, 从而大大减少延迟。 Daydream还带有带有APP和HOME按钮的新型无线控制器。
文章图片
不幸的是, 这些调整都无法解决VR面临的最大问题:缺乏内容。好消息是, 事情正在加速发展, 谷歌有望通过一系列涵盖情景喜剧到游戏的合作伙伴关系, 在Daydream上提供更多内容。
正如我在Google Cardboard概述中概述的那样, 我在移动VR领域的立场仍然有些保守。我的观点在最近的市场研究中得到了部分证明, 这似乎表明对VR的需求仍然疲软。 Google无法解决当今移动VR面临的所有棘手问题。这不是自满的问题; Google必须等待更好的硬件。
甚至在尝试Cardboard之前, 我就知道电池寿命和散热会成为问题, Google也是如此。向前迈进, 这将仍然是一个挥之不去的问题。实际上, Google明确指出, Nexus 6P的散热性能” 无法代表” 即将推出的支持Daydream的手机:
预期6P会在短时间使用后热调节CPU和GPU的性能, 具体取决于工作负载。在真正利用Daydream之前, 我们将不得不等待芯片制造商和智能手机供应商推出新一代产品。
对开发人员的影响:Daydream VR可能会提供一些新的可能性, 但这并不像看起来那样简单。虽然许多科技公司都在搭乘VR火车, 但消费者却没有。现在, 这是一个孤独而昂贵的旅程。
7.用户界面, 可访问性调整和背景优化 Google完善了用户界面, 添加了一些功能, 并对性能进行了微调, 以提供更流畅的用户体验。以下是一些新功能:
- 对大约100种新语言的部分支持, 以及改进的语言包和主要语言(如西班牙语和英语)的新本地变体。
- 设置中的多个语言环境, 这将大大改善多语言环境和双语用户的体验。
- 改进了WebView(应用程序内浏览器)。它将依靠Chrome APK(版本51)来呈现页面, 从而减少内存使用和带宽需求。只要启用了Chrome渲染, 独立的WebView APK将不再更新。
- Android for Work更新以提高安全性并允许始终在线的VPN支持。快速切换功能将允许用户在工作模式和个人模式之间切换。
- Project Svelte, 是Google进行的一系列后台优化的名称, 这些后台优化可更改应用程序的运行方式以减少RAM使用量。谷歌表示, 它将继续扩展和更新JobScheduler和GCMNetworkManager, 但同时, 它将删除三个广泛使用的广播:CONNECTIVITY_ACTION, ACTION_NEW_PICTURE和ACTION_NEW_VIDEO。如果你的应用依赖其中任何一个, 则必须迁移到JobScheduler。你可以在Google上查看令人讨厌的详细信息。
- UI会调整为” 欢迎” 屏幕和” 快速设置” 图块, 该图块现在包括可在第三方应用程序中使用的新API。通知增强功能包括两个新的自定义视图API。
- Google助手, Google Allo, Google Duo。
Android 7.0:底线是什么? 可以公平地说, Android 7.0对开发人员而言意义不大。这是渐进式的改进, 主要是关于优化。它无法帮助创建以前无法实现的惊天动地的应用程序和服务。
但是我没有发现任何问题。智能手机已经配备了功能, 人们已经厌倦了头, 因此可以理解的是Google选择专注于提高性能, 能效, 安全性和整体用户体验。并且, 与iOS一样, Android现在已经成熟。如果你对缺少新功能感到失望, 建议你习惯一下, 因为这是新常态。
【适用于开发人员的Android 7.0(新功能,性能升级和你不关心的其他内容)】移动硬件和软件快速发展的时代早已一去不复返了。增量是新常态。
想一想, 关于Android 7.0的最大新闻不是操作系统本身。 Google决定发布新的Pixel手机, 以充分利用该操作系统提供的所有功能。从硬件的角度来看, 它们并不是特别特殊-它们像Nexus系列的前辈一样基于现成的技术。但是Google针对Pixel的业务模式却大不相同, 其重点在于控制端到端用户体验并以类似于Apple的方式增加价值。
现在推测Pixel将对其余Android生态系统产生什么影响还为时过早, 但是可以肯定的是:这将是一种微妙的平衡行为。 Google可以选择仅保留其内部Pixel手机的某些功能, 但与此同时, 它也不能夸大其词。通过添加太多Pixel专有功能, 它不能与Android供应商疏远并降低其产品的竞争力。
所有这些如何发挥还有待观察, 但是与此同时, 我们应该专注于充分利用Android 7.0。实际上, 请使用Beta版的7.1, 并可能会在短期内发布该版本。
相关:针对开发人员的Android M(Android 6.0):朝着正确方向发展的一步
推荐阅读
- Kotlin的十项功能可促进Android开发
- iOS开发人员不知道的10个最常见错误
- 大多数Swift开发人员不知道自己犯的错误
- iOS ARKit教程(用裸露的手指画画)
- 如何在Mac上用C#制作Android和iOS应用
- 使用Android修复的移动视口
- android ninepatchdrawable可缩放
- Applescript函数,用于检查应用程序是否正在运行
- Applescript函数-send CMD Command down键加字母键