Android-11- 正式发布 --- 开发者们的舞台已就绪,flutterpush 消息
同步 IME 切换效果??- 这是一组全新的 API,让您可以在 IME (输入法编辑器,也叫软键盘) 和系统栏进出屏幕时同步调整应用中的内容,从而更轻松地创建出自然、直观、流畅的 IME 切换效果。为了确保切换时做到逐帧精确,新的?WindowInsetsAnimation.Callback?API 会在系统栏或 IME 移动时逐帧告知应用边衬区的变化。此外,您可以通过新的?WindowInsetsAnimationController?API 控制系统 UI,包括系统栏、IME、沉浸模式等。阅读?这篇博文?了解更多。
△ 左侧示意: 通过边衬区动画监听器实现 IME 同步切换效果?右侧示意: 通过 WindowInsetsAnimationController 实现应用驱动的 IME 体验
HEIF 动画可绘制对象??-?ImageDecoder API?现在允许您解码和渲染存储在 HEIF 文件中的图像序列动画,方便您引入高品质的素材,同时最大程度地减少流量消耗和 APK 尺寸。相对于 GIF 动画,HEIF 图像序列可以显著减小文件尺寸。
原生图像解码器??- 应用可以使用新的?NDK API?来通过原生代码解码和编码图像 (如 JPEG、PNG、WebP),以便进行图形或后期处理,而且因为您无需捆绑外部代码库,从而得以保持较小的 APK 尺寸。原生解码器还可以从 Android 持续的平台安全更新中获益。我们提供了?NDK 样例代码?作为使用参考。
MediaCodec 中的低延迟视频解码??- 低延迟视频对于?Stadia?等实时视频流应用和服务至关重要。支持低延迟播放的视频编解码器会在解码开始后尽快返回流的第一帧。应用可以使用新 API 来针对特定编解码器?检查) 和?配置?低延迟播放。
可变刷新率??- 应用和游戏现在可以通过?新的 API)?为其窗口设置首选帧率。大多数 Android 设备以 60Hz 的刷新率更新屏幕,但是某些设备支持多种刷新率,例如 90Hz 和 60Hz,并可在运行时切换。在这些设备上,系统会基于首选帧率来为应用选择最佳刷新率。您可以通过 SDK 和 NDK 来使用该 API。详细信息请访问?官方文档。
动态资源加载器??- Android 11 提供了一个新的公开 API 来让应用在运行时动态加载资源和素材。通过?Resource Loader 框架,您可以在应用或游戏中包含一套基本资源,然后在运行时根据需要加载其他资源,或更改已加载的资源。
Neural Networks API (NNAPI) 1.3??- 我们持续增加算子和控制,以支持 Android 设备上的机器学习。为了优化常见的使用场景,NNAPI 1.3 增加了优先级和超时、内存域 (memory domains) 以及异步指令队列的 API。新的算子支持包含有符号整数非对称量化以及分支和循环的高级模型,hard-swish 算子则可以用于加速下一代设备上视觉模型 (如?MobileNetV3)。
开发者体验
应用兼容性工具??- 我们努力将大多数 Android 11 行为变更设置为可选择开启,从而最大限度地减少对兼容性带来的影响,除非您将应用的?targetSdkVersion?设置为 30,否则这些变更不会生效。如果您是通过 Google Play 发布应用,则有一年多的时间来选择支持这些变更,但我们建议尽早开始测试。为了帮助您进行测试,Android 11 允许您单独开启或关闭其中的许多变更。详细信息请访问?官方文档。
应用退出原因??- 了解应用退出的原因以及当时的状态十分重要——包括应用所在的设备类型、内存配置和运行场景。Android 11 通过?退出原因 API?让这个事情变得更加容易: 您可以使用该 API 来查看应用最近退出的?详细信息。
数据访问审核??- 数据访问审核可以让您更好地了解自己的应用访问用户数据的情况,以及访问来自的用户流程。例如,它能帮您识别无意的私有数据访问,不论其来自于您自己的代码还是其他 SDK。详细信息请访问?官方文档。
ADB 增量安装 (?ADB Incremental?) - 在开发过程中使用 ADB (Android Debug Bridge) 安装体积较大的 APK 可能会拖慢速度,影响您的工作效率,对 Android 游戏开发者而言尤其如此。Android 11 带来了 ADB Incremental,现在从开发机向 Android 11 设备上部署大型 APK (2GB 以上) 的速度可以提高 10 倍之多。详细信息请访问?官方文档。
Kotlin 可空性注解??- Android 11 为公共 API 中的更多方法增加了可空性注解。而且,它将一些现有的注解从警告升级为错误。这可以帮助您在构建时就发现问题,不用等到运行时才出错。阅读?此文?了解更多。
让您的应用为 Android 11 做好准备
Android 11 即将抵达用户手中,现在是时候?完成您的兼容性测试并发布更新?了。
请首先关注?针对所有应用的行为变更:
下面是首先需要关注的行为变更 (无论您应用的 targetSdkVersion 是多少):?
单次权限??- 现在,用户可以为位置信息、设备麦克风和摄像头授予单次使用权限。详细信息请访问?官方文档
外部存储访问权限??- 应用无法再访问外部存储空间中其他应用的文件。详细信息请访问?官方文档
Scudo Hardened Allocator??- 现在它是应用内原生代码的堆内存分配器。详细信息请访问?官方文档
文件描述符排查器??- 此功能现在默认启用,以检测应用原生代码的文件描述符处理错误。详细信息请访问?官方文档:
Android 11 中还有许多?可选择支持的行为变更?- 您的应用如果针对新平台发布,才会受到影响。我们建议在您发布应用的兼容版本后尽快评估这些变更。有关兼容性测试和工具的更多信息,请查看?Android 11 兼容性相关的资源,并访问?Android 11 开发者网站?了解技术细节。
使用新功能和 API 改进您的应用
准备就绪后,请深入研究 Android 11 并了解您可以使用的?新功能和 API。下面是一些您可以优先考虑的重点功能。
我们推荐所有应用支持这些功能:
深色主题??(自 Android 10 开始支持)?- 通过添加?Dark Theme?(深色主题) 或启用?Force Dark,确保为启用全系统深色主题的用户提供一致的体验。
手势导航??(自 Android 10 开始支持)?- 请支持手势导航,包括提供边到边的沉浸式体验,以及确保自定义手势与默认手势配合良好。详细信息请访问?官方文档:
共享快捷方式??(自 Android 10 开始支持)?- 想要接收共享数据的应用应该使用?共享快捷方式 API?来创建共享目标。想要发送共享数据的应用应确保使用?Android Sharesheet。
同步 IME 切换效果??- 使用新的 WindowInsets 和相关 API 为用户提供流畅的切换效果。详细信息请阅读?这篇博文。
新的屏幕类型??- 对挖孔屏或瀑布屏设备,请确保根据需要针对这些屏幕测试和调整您的内容。详细信息请访问?官方文档。
我们还推荐这些功能,如果它们和您的应用体验契合的话:
会话??- 消息和通信应用可以通过提供长效?共享快捷方式?和在通知中呈现对会话来融入用户的对话体验。详细信息请访问?官方文档。
聊天气泡 (?Bubbles?) - Bubbles 可以在多任务切换时依然保持对话可见及可用。应用通过基于通知的?Bubbles API?来实现此功能。
5G??- 如果您的应用或内容可以利用 5G 更快的速度和更低的延迟,请参考我们的?开发者资源,开始构建 5G 体验。
设备控制??- 如果您的应用支持外部智能设备,请确保这些设备可以从新的 Android 11 设备控制菜单访问。详细信息请访问?官方文档。
媒体控制??- 对于媒体应用,我们建议支持 Android 11 媒体控制,这样用户就可以从快速设置 (Quick Settings) 菜单中管理媒体播放。详细信息请访问?官方文档。
您可以前往?developer.android.google.cn/11?了解更多有关 Android 11 功能的信息。
Android 11 即将出现在您身边的设备上!
Android 11 将从今天开始在选定的 Pixel、一加、小米、OPPO 和 realme 手机上陆续推出,未来几个月将有更多合作伙伴推出以及升级设备。如果您拥有 Pixel 2、3、3a、4 或 4a 系列手机,包括那些参加了今年 Beta 测试计划的手机,请关注即将到来的 OTA 更新!
Pixel 设备的 Android 11 出厂系统映像也可以通过?Android Flash Tool?获得,您也可以在?这里?下载。和以往一样,您可以通过 Android Studio 中的 SDK Manager 获得最新的 Android 模拟器系统映像。如果您想在其他支持 Treble 的兼容设备上进行更广泛的测试,可以在?这里?获取通用系统映像 (GSI)。
如果您需要 Android 11 的源代码,可以在?Android 开源项目?repo 的 Android 11 分支下的?这个地址?获取。
下一步是什么?
我们很快会关闭预览版问题反馈通道,并清除针对开发者预览版或 Beta 版的开放 Bug,如果您再次发现了曾经在预览版时期提交过的问题,请在 AOSP 问题反馈表单中针对 Android 11?提交新的错误报告,希望您继续为我们提供反馈意见!
再次感谢今年参与预览计划的众多开发者和早期体验者!大家为我们提供了非常好的反馈,助力我们打磨产品。正是大家提交的数以千计的问题报告将 Android 11 打造成了一个更好、更适合用户的平台。
期待在 Android 11 上看到大家的应用!
尾声
如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级 Android 工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对 Android 开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近 6 个月最新录制的,相信这份视频能给你带来不一样的启发、收获。
Android 进阶学习资料库
一共十个专题,包括了 Android 进阶所有学习资料,Android 进阶视频,Flutter,java 基础,kotlin,NDK 模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework 源码!
大厂面试真题
PS:之前因为秋招收集的二十套一二线互联网公司 Android 面试真题 (含 BAT、小米、华为、美团、滴滴)和我自己整理 Android 复习笔记(包含 Android 基础知识点、Android 扩展知识点、Android 源码解析、设计模式汇总、Gradle 知识点、常见算法题汇总。)
《2017-2020 字节跳动 Android 面试历年真题解析》
如果需要 PDF 版本可以在群文件夹里,自行领取!
自行下载直达领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
以上进阶 BATJ 大厂学习资料可以免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容】。
评论