Android开发者

Android开发者 查看完整档案

北京编辑  |  填写毕业院校谷歌中国  |  开发者社区 编辑 developer.android.google.cn/ 编辑
编辑

Android 最新开发技术更新,包括 Kotlin、Android Studio、Jetpack 和 Android 最新系统技术特性分享。

个人动态

Android开发者 发布了文章 · 3月5日

Android 开发挑战赛 | 第 2 周: 倒计时器

3...2...1… 是时候开启新的挑战了!欢迎您挑战 #AndroidDevChallenge 第二周的题目!我们很高兴看到很多开发者在上周的挑战中提交的创意作品:

其中不乏来自中国开发者的精彩作品,我们已经迫不及待想要看到您在本周的创作了!本周挑战内容如下:

第 2 周挑战内容 - 倒计时器 ⏲️

创建一个能正常工作的单屏倒计时器。您必须在太平洋标准时间 3 月 9 日 23:59 (北京时间 3 月 10 日下午 3:59) 之前 提交您的参赛作品

您的界面必须完全使用 Compose 构建。为帮助您构建应用,请参阅 Compose 文档中有关 状态动画 的内容。如需上手学习,请试试 Compose pathway,其中的 Codelab 涵盖有助于完成此项挑战的多个主题。

您针对每项挑战的解决方案必须在一个 GitHub repo 中实现。我们为您准备了一个 Github repo 模板,其中包含一个使用 Compose 构建的基本 Hello World! 应用以及持续集成设置。请复制此模板并按照 README 中的说明进行设置。

本周奖品: Compose 海报集!

第二周的奖品是一件艺术品,我们将与您协作,共同完成 Compose!成功完成这项挑战并提交参赛作品的前 500 名参赛者将收到一张 Jetpack Compose 海报以及一套 Android 画笔,您可以自己体验上色,纾解压力。此外,您还将获得限量版 Jetpack Compose 漫画海报,描绘了 Jetpack 团队如何力挽狂澜,从 "糟糕的界面" 手中拯救世界。

△ 第二周奖品: Jetpack Compose 海报集

△ 第二周奖品: Jetpack Compose 海报集

帮助改进 Jetpack Compose

社区支持是 Jetpack Compose 的核心动力之一,您的反馈有助于我们打造更好的产品:

  • 在官方 问题跟踪页 上提交有关 Jetpack Compose 的问题。
  • 注册 以参与 Jetpack Compose 研究。

https://www.qq.com/video/y323...

*有关参与挑战赛的更多信息,请参阅 完整官方规则

查看原文

赞 1 收藏 0 评论 0

Android开发者 发布了文章 · 3月3日

Kotlin Symbol Processing (KSP) Alpha 版现已发布

作者 / 软件工程师 Ting-Yuan Huang 和产品经理 David Winer

我们很高兴地向您介绍 Kotlin Symbol Processing (KSP) 的 Alpha 版,帮助您在 Kotlin 中构建轻量级编译器插件的全新工具。KSP 提供的功能类似于 KAPT,但速度提高了 2 倍,可以直接访问 Kotlin 编译器功能,并且开发时充分考虑到了多平台兼容性。

KSP 兼容 Kotlin 1.4.30 及更高版本。您可以在 KSP GitHub repo 中查看开放源代码和文档。

为何推出 KSP?

Kotlin 开发者向我们反馈最多的需求就是提高构建速度。许多开发者每天都要迭代并部署数十次应用,所以构建速度缓慢会使开发者不得不将大量时间耗费在等待上。编译 Kotlin 代码的最大挑战之一是 Kotlin 没有原生注释处理系统。诸如 Room 等注释处理器在 Android 平台无处不在,它们依赖于通过 Kotlin 注释处理工具 (KAPT) 实现的 Java 注释处理兼容性。但是,KAPT 的运行速度可能会很慢,因为它需要生成中间的 Java 存根,然后 Java 注释处理系统才能对其进行提取。

在设计 KSP 时,我们考虑了如果从头开始构建,Kotlin 的注释处理应是怎样的形式。KSP 提供了一个功能强大且简单的 API,它可以直接解析 Kotlin 代码,因此大大降低了 KAPT 生成存根所带来的构建速度负担。实际上,利用 Room 库执行的初始基准测试表明,KSP 相比 KAPT 速度提高了 2 倍左右。

开始使用

要查看 KSP 的实际运行情况,请从 GitHub 下载 KSP Playground 项目。您可以从中获得:

  • : 将构建器模式作为 KSP 处理器实现的小型 test-processor 库
  • 使用项目: 显示如何在实际 Kotlin 项目中使用构建器处理器的 workload 目录

实现构建器的所有逻辑全部位于 test-processor 中 - 对于使用者 (workload) 来说,使用 KAPT 和使用 KSP 的唯一区别是更改了两行构建文件:

这是 KSP 的目标: 大多数 Android 应用开发者无需担心其内部结构;除了这一行更改以外,支持 KSP 的库类似于普通的注释处理器,而速度却提高了 2 倍。也就是说,在同一模块中使用 KAPT 和 KSP 最初可能会降低您的构建速度,因此在 Alpha 版期间,最好在单独的模块中使用 KSP 和 KAPT。

随着越来越多的注释处理器采用 KSP,我们希望您的大多数模块都能够使用 KSP 来直接替代 KAPT。现在,您可以在 表格 中查看哪些注释处理器提供了 KSP 支持。如果表中缺少已支持或正在实现 KSP 支持的库,请将您的宝贵建议反馈给我们!

如果您是当前某个使用注释处理的库作者,可以在 快速入门README 指南中找到有关如何使您的库与 KSP 兼容的更多信息。

对于库作者而言,KSP 目前所处的 Alpha 版阶段是对其深入研究的良好契机,欢迎您在 KSP 问题跟踪器 中向我们提供有关 API 的反馈。此外,我们会在谷歌开发者公众号和 Kotlin Slack 的 #ksp 频道上定期发布版本动态。自去年 6 月的开发者预览版发布以来,我们已经解决了超过 100 项错误和问题,其中数十项都来自优秀的 Kotlin 库开发者社区的反馈。希望您可以继续将问题通过 KSP 问题跟踪器 反馈给我们,或在文章下方进行留言。

Java 是 Oracle 和/或其附属公司的注册商标。

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月26日

Android 12 首个开发者预览版到来

作者 / Dave Burke,工程副总裁

从手机和笔记本电脑,再到平板电脑、电视甚至汽车,Android 应用每天都在各种设备上支持着数十亿人的工作、娱乐、交流和创造。当越来越多的人开始依赖您所构建的体验,人们的期望也跟着水涨船高。我们坚信,Android 开发者们的反馈有助于我们为您的应用和所有用户构建一个更好的平台。我们已经发布了 Android 12 (下一代 Android 系统) 的第一个开发者预览版,供您测试和提交反馈。

对于每一个版本,我们都致力于使操作系统更智能、更易用、更强劲,并且始终以隐私和安全为核心。在 Android 12 中,我们还将为您提供新的工具,帮助您为用户打造更出色的体验。首先是兼容媒体转码,即便您的应用尚不支持,这个功能也可以帮助应用使用最新的视频格式。此外,图像和视频等富媒体内容现在可以更轻松地复制/粘贴到您的应用里。我们还将添加隐私保护并优化性能,使您的应用保持及时响应。

首个预览版只是 Android 12 的开始,随着发布的进行,我们会有更多的内容分享给开发者。请继续阅读本文,了解 Android 12 的最新变化,并访问 Android 12 开发者网站,获取有关 下载并安装到 Pixel 设备发布时间表 的详细信息。与往常一样,尽早获得您的反馈并将其纳入最终产品对我们来说非常重要,因此请务 必告诉我们您的想法

除了我们在 Android 12 中所做的工作之外,我们还发布了另一个重要工具的最新进展,那就是可以帮助您更轻松地创建出色用户体验的 Jetpack Compose,这是我们用于构建原生界面的新一代工具包。欢迎您在评论区留言,告诉我们对 Jetpack Compose 最关切的问题。

信任和安全

隐私是我们一切工作的核心,在 Android 12 中,我们继续专注于为用户提供更多的透明度和控制权,同时保证设备和数据安全。在新版本中我们做出了很多改动,包括对可用于跟踪的标识符增加了新的限制,为应用组件增加了更安全的默认值,等等。这些变更可能会对应用产生影响,因此,我们建议您尽快开始测试。同时,请继续留意将在后续预览版中提供的更多隐私和安全功能。

WebView 中的现代 SameSite cookie 行为 - WebView 顺应 Chrome 和其他浏览器的 变化,加入了新的 SameSite cookie 行为,提供额外的安全性和隐私性,让用户对 cookie 跨站点的使用方式拥有更多的透明度和控制权。请访问 官方文档 了解详细信息。

限制使用 Netlink MAC - 我们将继续帮助开发者迁移到 保护隐私的可重置标识符。为了在多次版本发布中简化设备级别 Netlink MAC 的迁移,我们在 Android 11 中将这个功能限制在了 API 级别 30。而在 Android 12 中,无论 targetSDK 级别是多少,我们将对所有应用施加这一限制。请访问 官方文档 了解详细信息。

更安全地导出组件 - 为了防止应用意外导出 activity、服务和接收器,我们更改了 android:exported 属性的默认处理方式,使其更加明确。借助这项变更,声明一个或多个 intent 过滤器的组件现在必须显式声明一个 android:exported 属性。您应检查清单文件中的组件,避免与此变更相关的安装错误。请访问 官方文档 了解详细信息。

更安全地处理 Intent - 为了使 PendingIntents 的处理更加安全,Android 12 要求应用为每个 PendingIntent 显式声明一个可变性标志,即 FLAG_MUTABLE 或新的 FLAG_IMMUTABLE。请访问 官方文档 了解详细信息。

更多的 隐私与安全变更.

更好的用户体验工具

在 Android 12 中,我们在完善体验和改进性能的关键领域持续投入资源。以下是目前的部分进展。

兼容媒体转码 (compatible media transcoding) - 随着 HEVC 硬件编码器在移动设备上的普及,相机应用也多以 HEVC 格式进行拍摄。与旧的编解码器相比,HEVC 在质量和压缩方面都具有明显提升。大多数应用都应支持 HEVC,但对于无法支持 HEVC 的应用,我们引入了兼容媒体转码。

借助此功能,不支持 HEVC 的应用可以让平台自动将文件转码为广泛兼容的 AVC 格式。转码过程需要一定时间,具体取决于视频的内容和设备的硬件属性。例如,30fps 的一分钟 1080p 视频在 Pixel 4 上转码需要 9 秒左右。您可以通过声明应用不支持的媒体格式来选择使用转码服务。我们强烈建议开发者使应用支持 HEVC,如果无法支持,再启用兼容媒体转码。该功能将在所有使用 HEVC 格式进行视频拍摄的设备上启用。我们希望听到您对此功能的反馈。请访问 官方文档 了解详细信息。

AVIF 图像支持 - Android 12 引入了对 AV1 图像文件格式) (AVIF) 的平台支持,提供更高的图像质量和更高效的压缩。AVIF 是一种使用 AV1 编码的图像和图像序列的容器格式。与其他现代图像格式一样,AVIF 利用了视频压缩的帧内编码内容。相较于旧的图像格式 (如 JPEG),在相同的文件大小下,AVIF 可以极大地提高图像质量。

△ 上图: AVIF (18.2kB);下图: JPEG (20.7kB)
图源:《AVIF 已经到来》中的 图像对比,作者 Jake Archibald

前台服务优化 - 前台服务是应用管理某些面向用户任务的重要方式,但过度使用会影响性能,甚至导致应用被系统终止。为了确保用户获得更好的体验,对于以新平台为目标的应用,我们将阻止从后台启动前台服务。为了帮助大家更轻松地摆脱这种做法,我们在 JobScheduler 中引入了一个新的 加急作业 (expedited job)),该作业具有较高的进程优先级、网络访问权限,并且立即运行,不受省电模式 (Battery Saver) 或低电耗模式 (Doze) 等电耗约束的影响。为了实现向下兼容,我们还将加急作业集成到了最新版本的 Jetpack WorkManager 库 中。另外,为了减轻对用户的干扰,我们现在将部分前台服务通知的显示延迟了最多 10 秒。这使短暂的任务有机会在通知显示之前完成。请访问 官方文档 了解详细信息。

富内容插入 (rich content insertion) - 用户喜欢看图像、视频和其他富有表现力的内容,但在应用中插入和移动这些内容并不总是那么容易。为了让您的应用能够快速接收富内容,我们引入了一个新的统一 API,让您能够接受任何来源的内容: 剪贴板、键盘或拖放。您可以将新接口 OnReceiveContentListener 附加到界面组件上,并在通过任何机制插入内容时获得回调。此回调将成为代码处理所有内容插入的唯一位置,从纯文本和样式文本到标记、图像、视频、音频文件等。为了实现向下兼容,我们已将统一的 API 加入了 AndroidX。请访问 官方文档 了解详细信息。

音频耦合触感效果 (audio-coupled haptic effect) - 在 Android 12 中,应用可以通过手机的振动单元提供音频耦合触感反馈。振动强度和频率来自于音频会话,让您可以创建更沉浸的游戏和音频体验。例如,视频通话应用可以使用自定义铃声,通过触感反馈识别来电者,您还可以在赛车游戏中模拟崎岖地貌。请访问 官方文档 了解详细信息。

多声道音频 - Android 12 为包含空间信息的音频带来了多项增强。添加了对 MPEG-H 透传 (passthrough) 和分载 (offload) 模式的播放支持,音频混音器、重采样器和效果经过优化,支持多达 24 个通道 (过去最大仅支持 8 个)。

手势导航的沉浸模式 API 改进 - 我们简化了沉浸模式,使手势导航在多种场景下,如观看视频、阅读书籍或玩游戏时,更简单、更连贯。在游戏相关的全屏体验中,我们仍然会 保护应用不受意外手势的影响,但在所有其他全屏或沉浸式体验中 (如视频播放器、阅读、图册),对于针对新平台的应用,我们将改变默认设置,允许用户通过单次滑动来进行导航。请访问 官方文档 了解详细信息。

通知界面更新 - 我们对通知设计进行改版,使其更现代、更易用、更实用。在首个预览版中,您可以发现从抽屉式导航栏和控件到模板本身都有所变化。我们还优化了整个系统的转场和动画,使其更加流畅。作为更新的一部分,对于针对 Android 12 的应用,我们会使用自定义内容、图标以及展开提示来对通知进行美化,从而使其观感与其他通知一致。请访问 官方文档 了解详细信息。

更快、更灵敏的通知 - 用户点按通知时,期望的是立即跳转到应用,越快越好。为了满足这一期望,开发者需确保点击通知应直接触发 Activity 启动,而不是使用 "蹦床" (通过广播接收器或服务) 启动 Activity。通知蹦床会造成明显的延迟,影响用户体验。为了保持通知的响应速度,Android 12 将阻止通知蹦床启动目标 Activity,我们也要求开发者不再使用这种实践模式。此项变更仅适用于针对新平台的应用,但对于所有应用,我们都会显示消息框,使您和用户可以看到蹦床。请访问 官方文档 了解详细信息。

改进的 Binder IPC 调用 - 在提升性能方面,我们关注如何降低系统可变性。经过对延迟和工作负载分布的深入观察,我们做出优化,减少了末端的中位数体验 (或 99% 的用例)。在此期间,我们有针对性地改进了系统绑定调用,增加了轻量级缓存策略,并专注于消除锁争用以改善延迟分布。这样一来,Binder 调用整体性能提升约 2 倍,特定调用的性能提升显著,如 refContentProvider() 提升了 47 倍、releaseWakeLock() 提升了 15 倍、JobScheduler.schedule() 提升了 7.9 倍。

应用兼容性

发布新的平台版本时,我们优先考虑应用的兼容性,让系统更新的体验更快、更顺畅。在 Android 12 中,大多数面向应用的变更都是可选的,以便您有更多时间调整适应。我们还更新了工具和流程,帮助您更快做好准备。我们还为 Google Play 系统更新添加了新功能,在 Android 12 设备上为您的应用提供更好的运行环境。

通过 Google Play 进行更多的 Android 更新 - 我们将继续扩大对 Google Play 系统更新 (Project Mainline) 的投入,为各设备上的应用营造更一致、更安全的环境。Android 12 新增了 Android Runtime (ART) 模块,支持向 Android 12 设备的核心运行时和库推送更新。我们可以提高运行时的性能和正确性,更有效地管理内存,并使 Kotlin 操作更为迅速 —— 这些都不再需要完整的系统更新。我们还扩展了现有模块的功能,例如,我们在一个可更新模块中提供了兼容媒体转码功能。

针对平板电脑、可折叠设备和电视的优化 - 随着越来越多的人开始在可折叠设备、平板电脑和电视等大屏幕设备上使用应用,现在是确保您的应用或游戏为这些设备做好准备的大好时机。您可以从 针对平板电脑进行优化为可折叠设备构建应用 开始着手。同时,针对家庭中最大的屏幕,首个适用于 Android TV 的 Android 12 预览版也已推出。您不仅可以通过此预览版将最新的 Android 功能带到电视,还可以在全新的 Google TV 环境测试您的应用。请前往 Android TV 开发者网站 了解更多信息并使用 ADT-3 开发者工具包 上手开发。

非 SDK 接口列表更新 - 我们增加了受限制的 非 SDK 接口,和往常一样,我们期待着您的反馈,也欢迎您 提出公开 API 的需求

更轻松地针对变更进行测试和调试 - 为了让您更轻松地测试会影响应用的可选变更,我们已经将许多变更设置为可开关。您可以在开发者选项或 adb 中通过这些开关逐一强制启用或停用这些变更。请访问 官方文档 了解详细信息。

△ 开发者选项中的应用兼容性切换开关

△ 开发者选项中的应用兼容性切换开关

平台稳定性里程碑 - 和去年一样,我们会提前告知我们的平台稳定性里程碑,让您有更多的时间规划应用兼容性工作。在此里程碑,我们不仅会锁定最终版的 SDK/NDK API,还会锁定最终内部 API 和面向应用的系统行为。我们预计将在 2021 年 8 月抵达平台稳定性里程碑。这样在正式发布前,您将有几周的时间进行最终测试。发布时间表详见: https://developer.android.google.cn/about/versions/12/overview

即刻开始体验 Android 12

不论您想体验 Android 12 的功能、测试应用还是 提交反馈,都可以从这次的开发者预览版开始。只需将设备系统映像 下载并刷入Pixel 3 / 3 XLPixel 3a / 3a XLPixel 4 / 4 XLPixel 4a / 4a 5GPixel 5 设备,即可立即开始使用。如果您没有 Pixel 设备,可以将 64 位系统映像刷入 Android Studio 中的 Android Emulator 使用。

设置 完毕后,您可以:

  • 体验新功能和 API - 在开发者预览版的早期阶段,您的反馈至关重要。您可以在我们的跟踪页报告问题,也可以前往 反馈和需求 页面,通过特定功能的调查问卷提供直接反馈。
  • 测试您现有应用的兼容性 - 这是为了了解您的应用是否受到 Android 12 中默认行为变更的影响。您只需要将当前发布的应用安装到运行 Android 12 的设备或模拟器上并开始测试即可。
  • 使用可选变更项测试您的应用 - Android 12 拥有可选的行为变更,这些变更仅在您的应用以新平台为目标时才会造成影响。尽早了解和评估这些变更非常重要。为了更易于测试,您可以 单独启用或禁用这些变更

我们将在整个 Android 12 发布周期内定期更新预览版系统映像和 SDK。这次发布的初始预览版仅供开发者使用,不面向日常或消费者使用,因此我们仅提供手动下载。您可以将系统映像刷入 Pixel 设备,或在运行 Android 11 的设备上加载 (sideload) OTA 映像,在后一情况下您甚至不需要解锁引导加载程序 (bootloader) 或擦除数据。而无论使用哪种方式,在手动安装预览版本后,您都将能够通过无线方式自动获取未来所有后续预览版和 Beta 版更新。请访问 官方文档 了解详细信息。

当我们接近最终产品时,我们也将邀请消费者试用,届时将开放 Android Beta 注册。敬请关注后续信息,但目前 Android 12 尚未提供 Beta 版本

了解本次发布的完整信息,请访问 Android 12 开发者网站

查看原文

赞 0 收藏 0 评论 1

Android开发者 发布了文章 · 2月25日

Android 开发挑战赛: Jetpack Compose 助您起飞!

Jetpack Compose 是 Android 的新一代工具包,用于构建原生界面。它使您能够借助强大的工具和直观的 Kotlin API,以更少的代码快速地完成应用开发。随着 Jetpack Compose Beta 版于 今日发布,现在是了解并准备使用 Compose 的绝佳时机。为帮助您开始使用 Jetpack Compose,我们将启动一项新的 #AndroidDevChallenge (Android 开发挑战赛)!

https://www.bilibili.com/vide...

在接下来的四周内,#AndroidDevChallenge 将发起一系列每周挑战,以帮助您使用 Jetpack Compose 更快地构建更出色的应用。每项挑战都围绕 "飞速提升洞察力" 这一主题,并分别聚焦 Compose 的一个新特性: 从动画到 Material Theming (主题),从 Composables 到列表,不一而足!欢迎参与每项挑战,赢取包括 Pixel 5* 在内的 1,000 多份奖品。第一项挑战于今日开启!

挑战内容

我们每周都会启动规则和任务各异的新挑战。从今日起,每周我们会发布一篇博文,为您提供有关任务内容和完成时间的完整说明。每项挑战都将帮助您熟悉 Compose 编程思想 和不同的 Compose API,从诸如文本和列表等基本的 Composable 到状态、动画等均有涵盖。

您针对每项挑战的解决方案必须在一个 GitHub repo 中实现。我们为您准备了一个 Github repo 模板,其中包含一个使用 Compose 构建的基本 Hello World! 应用以及持续集成设置。请复制此模板并按照 README 中的说明进行设置。

第 1 周挑战内容 - 小狗领养应用

发令枪已响,让我们立即开启 #AndroidDevChallenge: 构建一款小狗领养应用吧!该应用需包含显示小狗列表的概览画面,以及显示每只小狗具体情况的详细信息画面。您必须在太平洋标准时间 3 月 2 日晚 23:59 (北京时间 3 月 3 日下午 3:59) 之前 提交您的参赛作品

您的界面必须完全使用 Compose 构建。对于您提交的作品,我们只会基于应用的界面层进行评判。为帮助您构建应用,请参阅 Compose 文档中有关 布局列表、文本和导航的内容。如需上手学习,请试试 Compose pathway,其中的 Codelab 涵盖有助于完成此项挑战的多个主题。

您是 🐱 粉而非 🐶 粉?没问题!本次挑战欢迎您提交任何类型宠物的领养应用。

我们期待看到您构建的作品!

本周奖品

我们的首发挑战奖品可谓您在使用 Compose 时的不二搭档: 由乐高积木组成的限量版 Jetpack Compose 超级英雄奖杯。成功完成这项挑战并提交参赛作品的前 500 人可以将此奖杯收入囊中,成为您的 Android 手办阵营中的一员,届时您可以尽情炫耀自己的首周 #AndroidDevChallenge 获奖者身份。

△ 首周奖品: Jetpack Compose 超级英雄奖杯

△ 首周奖品: Jetpack Compose 超级英雄奖杯

帮助改进 Jetpack Compose

社区支持是 Jetpack Compose 的核心动力之一,您的反馈能帮助我们打造更好的产品:

  • 在官方 问题跟踪页 上提交有关 Jetpack Compose 的问题。
  • 注册 以参与 Jetpack Compose 研究。

* 每周的挑战都会提供新的奖品;如果当周奖品为 Google Pixel 5,且获奖者所在国家/地区未销售 Google Pixel 5 时,我们将为其提供价值相近的电子礼品卡。有关更多信息,请参阅官方规则。

** 有关参与挑战赛的更多信息,请参阅 官方规则

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月24日

让您的 Android Auto 应用吸引更多用户

作者 / 产品经理 Eric Bahna

去年 12 月份,我们更新了 Google Play 商店,以允许开发者发布新的 Android Auto 应用进行封闭式测试。现在,您可以将导航、停车以及收费类的应用发布到 Google Play 商店进行开放式测试,以触达更多的用户。在开放式测试中,可下载应用的用户数没有任何限制,您也无需管理电子邮件列表。这是一个重要的里程碑,借此我们能够更方便地将这些应用提供给所有实际使用的用户。您可以着手使用 Android 汽车应用库 并在 Play 管理中心选择开放式测试轨道。

我们的早期合作伙伴之一 TomTom AmiGO

提前透露一下我们未来的工作: 我们会将 Android 汽车应用库添加到 Android Jetpack 中!这样您就能保留与其他 Jetpack API 一致的体验,同时还能查看新的功能。我们添加该 Jetpack 开发库后,您可以轻松将自己的应用从现有库中迁移到该库,只需更改命名空间,并调整一些 API 调用即可。当该 Jetpack 库测试稳定后,我们会准备好 Google Play 商店,以便您能将这些新应用发布到生产轨道上。

当然,您现在就可以着手准备,无需等待该 Jetpack 库上线。

  1. 参考 开发者指南应用质量指南 设计您的应用。
  2. 借助 当前的 Beta 版开发库 进行开发,这样您可以从一开始就获得用户反馈。
  3. 使用 Desktop Head Unit 进行测试。
  4. 发布到 Google Play 商店 (现可发布至开放式测试轨道)。

我们非常期待看到各位构建的应用,赶快尝试吧!

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月24日

在多进程应用中使用 WorkManager

作者 / Android 开发者关系 Ben Weiss

📝 最近发布的 WorkManager 2.5.0 更适用于在多进程环境中使用,并提供了多项稳定性改进。

因此,如果您的某款应用管理着多个进程,并需要一种稳健的方式来管理后台工作 (不再出现初始化错误 ⚠),那么此版本便是您的首选。

您需要对代码进行几处更改,请继续阅读以了解更多内容。

在本文末尾,我还将列出此版本 WorkManager 库中的一些其他行为变更和新增内容。

隆重推出: work-multiprocess

这一全新的多进程工件通过将作业调度统一为单个进程,从而带来性能的提升。要开始使用此工件,请将其添加到您的应用。

Implementation "androidx.work:work-multiprocess:2.5.0"

您现在可以 选择 WorkManager 用于将 WorkRequest 加入队列的指定进程,并运行其进程中调度程序。

使用 Configuration.Provider 的配置如下所示。

class MyApplication() : Application(), Configuration.Provider {  override fun getWorkManagerConfiguration() =
    Configuration.Builder()
      .setProcessName("com.example:remote")
      .build()
}
注意: 您需要传递完全限定的进程名称作为 setProcessName 的参数,该名称由您的应用包名称,后跟英文冒号和主机的进程名称组成,例如 com.example:remote。

使用 work-multiprocess 时,您需要使用 RemoteWorkManager (而非 WorkManager) 来管理您的工作请求。RemoteWorkManager 将始终使用指定的进程将您的工作加入队列。这可确保您不会在调用进程中意外初始化新的 WorkManager。进程中调度程序也会在指定的同一进程中运行。

优势

按照上述方法配置 WorkManager 并使用 RemoteWorkManager 调度作业时,您的工作会在多进程应用中得到更快速、更可靠的管理。这是因为 SQLite 争用 情况会大大减少 (因为我们不再依赖于以文件为基础的锁定),且不再需要跨进程的作业协调,因为您的应用仅会在您指定的进程中运行单个 WorkManager 实例。

行为变更 🔀

作业协调

之前,当 ActivityManager 无法实例化 JobService 以启动作业时,该作业将因为平台中的底层问题而被静默删除。WorkManager 现在可确保通过协调 WorkRequest 对象与作业创建 "应用" 实例时,每个 WorkRequest 都会有一个后备调度程序作业。

限制内部数据库增长

我们发现应用崩溃的原因之一是设备存储空间不足。这种情况主要发生在存储空间本来就很少的设备上。但是,当应用调度大量工作时,导致设备存储空间不足的部分原因在于 WorkManager。

默认情况下,内部的 WorkManager 数据库会将已完成作业的记录保留 7 天。而现在,这个期限已减少至 1 天,大大降低了数据库的大小。

我们缩短了缓冲区持续时间,这样您就能借助 keepResultsForAtLeast() API 控制作业应被保留的时长。

全新测试 API ✨

如果您将 ListenableFuture 和 WorkManager 配合使用,测试工作会变得更轻松 — TestListenableWorkerBuilder Kotlin 扩展程序现在可以接收任何类扩展 ListenableWorker,从而在测试过程中为您提供更高的灵活性。

问题修复 🐛

除了新增的功能,此版本还包含多个错误修复,以提高 WorkManager 的稳定性、可靠性和性能。您可以在 版本说明 中查看所有更改以及修复的错误。

如何改进 WorkManager

通过 GitHub 向 WorkManager 贡献内容 👩‍💻

WorkManager 以及其他几个 Jetpack 库都接受通过 GitHub 贡献的内容。

Alan Viverette 撰写了一篇关于整个流程的 详尽博文

遇到问题时请告诉我们 📝

2.5.0 版本中修复的大部分错误都是通过 公开问题跟踪器 报告的。

创建可修复问题 的最佳方式就是创建一个我们可复现的问题。为帮助我们再现问题,建议您使用该 WorkManager 示例,或通过问题描述提供您的示例代码。

是时候行动起来,并更新您应用中使用的 WorkManager 库了。

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月20日

聚焦 #AndroidDevJourney | 第一期

作者 / 开发者关系项目经理 Luli Perkins

"开发者说 · DTalk" 活动上线至今,我们已收到上百位开发者的作品分享,其中不少优秀作品也已通过谷歌开发者公众号分享给大家。今天我们将为您带来一个全新的栏目 —— #AndroidDevJourney,亦是让各位开发者有机会通过我们的平台分享他们的故事。在接下来的几个月,我们会分享他们的开发之旅。同样的,我们也期待您的精彩分享,与更多开发者分享经验之谈!

下面就让我们来看一下本期都有哪些开发者的精彩故事吧!

Niharika Arora

Q: 介绍一下您成为 Android 开发者的经历以及您是如何入门的。

A: 我从大学四年级开始接触 Android 领域,一开始在一家名为 GreenAppleSolutions 的初创公司实习。在这家公司我获得了一个从头开发 Android 项目的机会,很幸运,我的第一个项目就在 Play 商店上线了。在实习过程中,我发现 Android 非常有趣,编写的每一行代码,都能通过设备实时呈现结果。我开始喜欢上了 Android,并决定把 Android 开发作为我的职业发展方向。

Q: 对您来说,哪个快捷键、技巧或诀窍是不可或缺的?

A: 我十分喜欢 Android Lint,它让我不必手动查找已弃用的调用或 API,因而可以节省大量时间。还可以帮助我遵循最佳做法,让我的代码得到更好的优化、更加安全,性能也更高。

Q: 对于刚接触 Android 的开发者,您最想分享的一条建议是?

A: 实际上,有两条建议:

  • 解决你的每一个小疑问是很重要的,即便是你认为比较愚蠢的问题。刨根问底,直到得到满意的答案为止;
  • 阅读教程是不错的做法,但还要深入探究文档。一开始可能感觉要上手的事情有点多,但长远看来,这有助于成为一名优秀的开发者。

Walmyr Carvalho

Q: 介绍一下您成为 Android 开发者的经历以及您是如何入门的。

A: 很有趣!2010 年,我开始在 iOS 上接触移动端开发,但到了 2011 年,我大学的最后一个项目是一款土木建筑应用,团队中没有人有 Mac,所以我们在 Android 上完成了项目 (顺便说一句,我们得到了 10 分)!当时我在给一些政府工作人员教授技术课程,对代码没那么大的兴趣,但在 2011 年的项目结束后,我得到了第一份 Android 初级开发者工作,这让我迷上了这个平台,以至于不想离开!

我开始使用 Eclipse 和 ADT、Holo 以及 ActionBarSherlock 进行 Java 开发,接触了早期的 Material Design,并参加了 2013 年 Google I/O 大会,当时 Google 推出了 Android Studio,这对我来说是一次不太起眼但意义非凡的经历,不仅仅因为学到了很多东西,还因为大会上遇到的人为我提供了很多帮助!

从那时算起,我从事移动开发 (主要是 Android) 已有 10 多年,期间帮助许多巴西科技公司和独角兽企业完成了他们的 Android 项目,从 2016 年开始,我成为当地 Android GDE (谷歌开发技术专家) 中的一员。

另外,我热爱开发和设计社区,所以我想尽可能参与其中。我是 GDG São Paulo 的前任组织者,也是 Kotlin Meetup São PauloAndroid Dev BR 的创始人和组织者,Android Dev BR 是全球最大的巴西语/葡语 Android 社区,成员超过 7,500 人!

我还以巴西 ACE StartupsGoogle For Startups Accelerator 项目导师的身份加入了国家初创公司社区。

Q: 对您来说,哪个快捷键、技巧或诀窍是不可或缺的?

A: Android Studio 上有一个简单但功能强大的快捷键,我经常会用到,即多光标实例选择,其实现方法为使用 Ctrl + G (macOS) / Alt + J (Windows + Linux) 进行增量实例选择或使用 Ctrl + Cmd + G / Shift + Ctrl + Alt + J 一次选择所有实例。看起来有点傻,但是这一快捷键在我写代码时帮助很大,尤其是在重构时。我每天都会用!

Q: 对于刚接触 Android 的开发者,您最想分享的一条建议是?

A: 我想我会用两个词来总结我的建议: 学习和分享。

尽可能多学习,不仅从官方文档提供的海量内容以及社区中学习,还要在持续不断的练习中通过错误自我学习。网上有很多免费内容,还有来自 Google 和像我一样的 GDEs (谷歌开发技术专家) 的帮助,会让开发者们走的更远。继续练习,不断获取新知吧!

学到新东西以后,与他人分享吧!我之所以取得今天的成就源于我会分享一些在学习过程中找不到的内容。Android 拥有超棒的社区为开发者提供帮助,你还可以在 Twitter、Reddit 和许多地方接触到所使用的 API 或库的创造者。你可以用多种方式来分享学到的知识,比如写文章、录制播客或视频等。

网络是一个强大的学习和分享工具,我真心建议大家通过网络来分享内容。如有需要,我也希望可以帮助到大家!:)

Nate Washington

Q: 介绍一下您成为 Android 开发者的经历以及您是如何入门的。

A: 我于 2015 年成为一名 Android 开发者,当时我正在实施第一个商业构想。我没钱再上学,因此我决定尝试自己创业。我开发了一款 Web 应用,但客户坚持要用一款原生应用来满足他们的需求。原本我想找经验更丰富的人来开发,但最终还是决定通过自学来构建一款 Android 应用。时间来到 2017 年,我和我的联合创始人 Christian 在 Google Play 商店上推出了我们公司的 Android 应用 Qoins。从那时起,我们为数以万计的 Android 用户提供服务,并进行了几轮融资。

Q: 对您来说,哪个快捷键、技巧或诀窍是不可或缺的?

A: 能够在虚拟设备上测试我们构建的 Android 应用确实帮了大忙。在为数千种不同设备构建 Android 应用时,需要考虑许多不同的场景。Firebase Test Labs 一类的工具以及其他虚拟设备服务让我能够创建特定的场景来进行实操测试,而这在我的 Android 设备上无法实现。

Q: 对于刚接触 Android 的开发者,您最想分享的一条建议是?

A: 犯错不可怕,错误也是过程的一部分。

Yuki Anzai

Q: 介绍一下您成为 Android 开发者的经历以及您是如何入门的。

A: 我在 2009 年的谷歌开发者大会 (GDD) 上拿到了自己的第一款 Android 设备 HTC Magic,而我的 Android 之旅也随之开启。当时我还是一名大学生,正在使用 JavaFX 编写我的个人应用,因此我熟悉 Java,在这方面有些经验。很快,我就开始把我的应用移植到 Android 上。毕业后我就职于一家软件公司,希望从事 Android 应用开发工作。但在那家公司似乎没有什么机会。因此我创立了自己的小公司,是一家开发 Android 应用的代理机构。

Q: 对您来说,哪个 Android 开发快捷键、技巧或诀窍是不可或缺的?

A: 有很多。如果一定要选一个,那就是 Android Studio。因为我最开始是使用 Eclipse 开发 Android 应用的,因此一直很欣赏 Android Studio 的出色表现。(同时我也离不开 Kotlin、RecyclerView、ConstraintLayout……)

Android Studio 有一个快捷键对于我来说必不可少,那就是 Command + B (转到声明或使用位置)。这个快捷键让我能够在声明和使用位置之间自由跳转。这在读取源代码 (包括 Android 平台和库代码) 时非常有用。

Q: 对于刚接触 Android 的开发者,您最想分享的一条建议是?

A: 阅读官方文档。阅读所使用的平台和库的源代码。加快学习进度的一个方法就是从头至尾 (直到应用投放市场之前) 搭建一款应用。

不要过度依赖库,尤其是在库会影响到你应用的整个结构时。你的应用可能比库存在的时间更长。

Madona Syombua

Q: 介绍一下您成为 Android 开发者的经历以及您是如何入门的。

A: 我的 Android 之旅要追溯到 2014 年初,在那之前,我是一家小公司的初级 Java 开发者,负责搭建库存系统。但是,我对这份工作并不感兴趣,我一直在寻找一份能让我的 Java 知识有用武之地的好工作。我买了我的第一部手机,是一部 Nokia,当我看到手机里的应用时,就在想他们是怎么做出这些应用的。我研究后发现,这些应用实际上是用 Java 编写的,从此我踏上了这一旅程。

我还记得我搭建的第一款应用 Simple Math,里面只包含一些 Activity,因为当时还没有 Fragment。现在回想起来,这些年我们确实取得了巨大的进步。Simple Math 的下载量为 500 次,评分 4.5,这激励了我要去构建更多应用。后来我赢得了 2018 年 Grow with Google 成长计划奖学金,这促进了我的职业发展。在这为期一年的学术研究过程中,我在 Google Play 商店上推出了第二款应用 Budgeting Buddy,这款应用的评分为 4.5,下载量超过五千次。目前,我任职于 Streem,职位是 Android 工程师,这些年来 Android 取得的进步以及技术和维护方面的改进让我深感欣慰,尤其是其中的模拟器。

Q: 对您来说,哪个 Android 开发快捷键、技巧或诀窍是不可或缺的?

A: 我离不开的一个快捷键是 [options + Command + L] 和 [Options + Command + O],这在我执行拉取请求的过程中帮了大忙。我还学到了一个非常棒的诀窍,那就是 git 本地历史选项,这真的发挥了巨大的作用。有时候我可能会忘记所更改的内容,但它总能帮我及时回想起来。

Q: 对于刚接触 Android 的开发者,您最想分享的一条建议是?

A: 实际上,当我完全过渡到移动端开发时,我觉得这是我一生中必须要去适应的学习曲线,这对我的帮助确实很大。随时了解新功能、其他人推荐的东西以及出现此类需求的原因,始终走在变革的前沿。例如,Room 的出现是一大惊人的进步,现在还出现了 dagger Hilt 等等。因此,如果让我回答这个问题,为新的开发者提供建议,那就是请准备好随时学习,你一定能体会到 Android 开发的乐趣。

我们为 Android 开发者社区的包容性深感自豪,欢迎不同背景、不同生活经历的所有开发者加入分享。如果您也受到鼓舞,下面的这些资源可以帮助您入门:

还有更多开发者计划期待您的加入:

"开发者说 · DTalk" 面向中国开发者们征集 Google 移动应用 (apps & games) 相关的产品/技术内容。欢迎大家前来分享您对移动应用的行业洞察或见解、移动开发过程中的心得或新发现、以及应用出海的实战经验总结和相关产品的使用反馈等。我们由衷地希望可以给这些出众的中国开发者们提供更好展现自己、充分发挥自己特长的平台。我们将通过大家的技术内容着重选出优秀案例进行谷歌开发技术专家 (GDE) 的推荐。点击这里 即刻报名 开发者说 · DTalk。

谷歌开发者社区 (Google Developer Groups,简称 GDG) 让开发者有机会结识技术志趣相投的本地开发者。GDG 线下聚会活动涵盖各种技术主题的讨论,您可以通过实践研讨会来学习新技能。

加入您所在城市的社区:https://developers.google.cn/community/gdg/groups

Google 旗下的 Women Techmakers 项目成立于 2014 年,致力于通过社区、关注和资源帮助所有女性在科技领域获得卓越发展。目前已有超过 10 万名女性开发者加入此计划,我们正与世界各地的社区合作,共同营造一个支持所有女性在科技领域取得发展和进步的环境。

成为会员: https://services.google.com/fb/forms/joinwomentechmakers/

谷歌开发者专家 (Google Developers Experts,简称 GDE) 项目是一个由资深技术专家、影响者和思想领袖组成的全球网络,他们通过在活动中发表演讲,发布内容并开发创新的应用,积极支持开发者、公司和技术社区的发展。GDE 们积极为世界各地的开发者和初创公司生态系统贡献心力、提供支持,帮助其构建和发布颇具创新能力的应用。点击这里 了解详情。

*Java 是 Oracle 和/或其附属公司的注册商标。

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月19日

您的 MAD 得分是多少?| MAD Skills

我们已经通过 Modern Android Development (简称 MAD Skills) 系列文章和在 Android 开发者文档上的 MAD Skills 内容集锦页面 与您分享了许多相关信息。现在,是时候了解一下 您的 MAD 分数 了!今天,我们将推出 MAD 计分卡,从您使用的 Jetpack 库的数量,到使用 Kotlin 编写的应用所占的百分比,通过这些指标展示您作为 Android 开发者的 "时髦" (modern) 程度。

您的 MAD 计分卡将通过 Android Studio 为您带来实用信息,例如通过 Android App Bundle 打包方式,能将您的应用大小缩减多少。它会对各种关键的 MAD 技术进行重点介绍,包括您可以使用的特定 Jetpack 库和 Kotlin 功能。您甚至会因为自己掌握的 MADdest 技能而获得专属的 MAD 角色 (说不定,您也许会成为 MAD 科学家)。

MAD 计分卡获取方法

新版 Android Studio 插件支持个性化展示您的 MAD 分数,以下是获取和分享计分卡的方法:

  • 第 1 步,安装插件: 在 Android Studio 的插件市场中搜索并下载 MAD Scorecard 插件。通过 Studio 轻松快速地完成安装。
  • 第 2 步,运行插件: 您可以随时在 Studio 主菜单的 Analyze 下找到 MAD Scorecard 插件。点击 Analyze,然后点击 Run 以开始创建您自己的计分卡。
  • 第 3 步,查看和共享您的计分卡: 当您的插件完成运行后,Studio 会向您发送一条包含您的个人链接的通知,其中提供了您的计分卡所含的所有详细信息。希望您满意并与他人分享您的结果!

通过 MAD Skills 系列提升技能

搞定计分卡后,可以查看 MAD Skills 系列视频和文章 中的各集内容,我们创作这些内容的目的是帮助您了解如何使用 Modern Android Development 中的最新技术,从而更加轻松地打造更为出色的应用。精心编排了长达三周的系列内容,包含了从导航、Kotlin 到 Android Studio 的相关主题,每个主题都以问答形式作为结尾,我们在此解答您的疑问。您可以观看我们诸如 Material Design 组件App Bundle 以及 导航 等早期主题,也可以前往我们的 Android Developers YouTube 频道 了解后续主题。

查看您的 MAD 计分卡 并与所有好友分享!

查看原文

赞 2 收藏 2 评论 0

Android开发者 发布了文章 · 2月18日

成为 Android App Bundle 专家 | MAD Skills

作者 / 开发者关系工程师 Ben Weiss

在去年底,我们完成了 6 期 Modern Android Development (简称 MAD Skills) 中关于 Android App Bundle 的视频内容,我与 Chet HaaseWojtek Kaliciński 和 Iurii Makhno 也通过在线问答环节一起回答了 Twitter #AskAndroid 话题标签以及直播活动中的大量问题。

下面让我们一起回顾一下这些内容吧。

Android App Bundle 简介

视频 中,Wojtek 讨论了 app bundle 对您及您的应用十分重要的原因,为此系列定下了基调。

全面了解 Play App Signing

通过与 Wojtek 一起使用 Play 管理中心,您可了解如何选择使用 Play App Signing。观看此 视频,您会知道选择使用 Play App Signing 时可选择哪些选项。

除此以外,您还可查看 Play App Signing 常见问题解答应用签名 Android 文档 和 Play 管理中心的 Play App Signing 帮助页面

构建您的第一个 app bundle

现在该了解如何构建和上传您的第一个 Android App Bundle 了。

在这个 视频 中,我会介绍使用 Android Studio 和命令行界面构建 app bundle 的过程。

您也可以阅读 本期内容的文字整理版

除了这一集以外,您还可通过查阅 App Bundle 文档 了解更多。

针对 Play Feature Delivery 功能配置应用

在这个 视频 中,您将了解分发选项。从安装到条件分发再到按需分发,我会介绍所有相关内容,而且,我们还将学习 GitHub 上的示例

这个视频也有 相关文章 供您参阅。此外,Play Core 库指南文档 也是一份十分有价值的资源。

使用 bundletool 和 Play 管理中心测试 app bundle

想知道如何测试 app bundle 吗?不用再费劲猜测了。Wojtek 将介绍如何在本地以及使用 Play 管理中心测试 app bundle。点此查看 相关视频

您可以参考 随附文章Android App Bundle 测试 指南,研读这一集的内容。

此外,我们还为您提供了 Play 管理中心的开发者工具 指南,以及 Play 管理中心 内部应用共享 帮助页面。

如果您想下载 bundletool,请前往 相关文档

使用 Android App Bundle 节省大笔开支

Android GDE Angélica Oliveira 将向我们介绍切换到 Android App Bundle 的过程和她的公司因此节省的大笔开支。点此查看 相关视频

在线问答环节

我们通过 Twitter #AskAndroid 话题标签和直播的在线问答环节收集了大家的问题,Chet、Wojtek、Iurii 和我通过在线问答环节对这些问题作出了实时解答,并整理成 视频

提醒: 从 2021 年 8 月开始,新应用将强制使用 App bundle

敬请阅读关于 2021 年 API 级别排名提升和 app bundle 要求的更多内容。

查看原文

赞 0 收藏 0 评论 0

Android开发者 发布了文章 · 2月11日

分析 AGI 纹理数据并提升 GPU 性能

Android GPU Inspector (AGI) 能够帮助我们洞悉 Android 设备上的 GPU 内部运行情况。对 GPU 来说,最具挑战性的任务之一就是在着色器中获取和过滤纹理数据。通过采集带宽缓存行为滤镜渲染三个方面的数据,我们就可以使用 AGI 监视与纹理相关的 GPU 工作负载。

我常常从观察纹理带宽入手,因为它表明了每帧画面中有多少纹理数据输入到了 GPU,进而可以快速定位潜在的性能问题。

就纹理带宽来说,一个很好的经验法则就是确保纹理读取带宽 (Texture Read Bandwidth) 均值不高于 1GB/s,而峰值远低于 5GB/s。

比如这个游戏,它就消耗了大量的纹理带宽,因为平均带宽达到了 4GB/s,而到了帧结尾的部分,峰值已超过 6GB/s。

后续渲染步骤 (Post Processing steps) 对纹理带宽需求较高是可以理解的,也许您可以在渲染的后序阶段把部分带宽使用于一些特殊的效果处理上面,比如实现光晕和色调映射。但是如果您的游戏存在很高的纹理读取带宽峰值,那么就需要注意潜在的性能问题了。

对于这个游戏来说,纹理带宽的消耗非常高,需要进一步分析。

要分析潜在的纹理带宽问题,首先我会检查纹理缓存情况。我的关注点在于纹理的停滞比例,L1 和 L2 缓存未命中的比例。当 L1 缓存未命中所需的纹理数据时,请求会转向 L2 缓存,然后会再转向系统内存。每一步都会增加延迟并且提高功耗。L1 的平均未命中比例不应该超过 10%,未命中的峰值比例不应该超过 50%。

这个游戏在 GPU 系统的数据采集显示 L1 缓存的平均未命中比例超过了 20%,而峰值已经达到 80% 甚至更高。

可见这些数据的确非常高了。

对于纹理停滞比例较高的典型原因是纹理未压缩、复杂的过滤操作 (如非等向性过滤),以及纹理未经 mipmap 处理。

为了分析造成纹理缓存未命中的潜在原因,我会观察非等向性过滤 (anisotropic filtering) 的纹理获取比例 (属于移动终端上的耗时操作) 和非基础级别纹理 (Non Base Level) 的获取比例。

获取非基础级别纹理的比例是对 mipmap 纹理获取效率的初略估计。当该数字为 0 时,它意味着 GPU 常常访问最顶级的 mipmap 纹理数据,也就是纹理的 mipmap 链中最大的一片或者未进行 mipmap 处理的纹理。

虽然在 2D 游戏中基本上可以接受这样的处理,但是在 3D 游戏中,这就算是问题了。

当渲染 GUI 或者 PostProcessing 期间访问未经 mipmap 处理的纹理是可以的。但是在其它场景下,这样的操作会带来很大的性能损失,也是导致较差数据缓存效果的原因。

事实上,获取纹理会消耗大量的系统带宽,同时可能会造成延迟、电池寿命缩短,甚至引起过热问题进而导致进一步的性能下降。分析纹理行为相关的 GPU 计数数据并解决所发现的问题,能够更轻易、更大幅度地提升用户体验。

要发现该类型和纹理相关的 GPU 性能问题,可以使用 Android GPU Inspector 采样您的游戏数据,然后依据这里为大家介绍的内容比较分析 GPU 计数器的数据和变化趋势。

查看原文

赞 0 收藏 0 评论 0

认证与成就

  • 获得 69 次点赞
  • 获得 0 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 0 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-08-15
个人主页被 5.7k 人浏览