Android Studio 4.1 发布,全方位提升开发体验

引言

我们很高兴发布了 Android Studio 4.1 稳定版,为大家带来一系列针对常见的编辑、调试和优化工作的功能。4.1 版本的重点诉求之一是帮助您在使用 Android Jetpack 库 (即 Android 的开发库套件) 时遵循最佳实践和提升代码编写效率。基于大家的反馈,我们直接在 IDE 中集成了诸多常用的 Android 库,从而改善了编写代码的体验。

Android Studio 4.1 的一些亮点如下: 引入全新的 Database Inspector,用于查询应用的数据库;支持浏览使用 Dagger 或 Hilt 进行依赖项注入的项目;支持在 Android 项目中使用 TensorFlow Lite 模型,进一步增强了对设备端机器学习的支持。我们还对 Apply Changes 进行了更新,以加快部署速度。我们根据大家的反馈进行了一些更改,引入了新的原生内存性能分析器和独立分析工具来为游戏开发者提供助力。

产品质量仍然是团队的主要关注点,我们一直在努力解决错误和性能问题。从大家的反馈来看,许多开发者十分认同我们专注于提高性能和可靠性的举措。很高兴地告诉大家,在本次发布周期中,我们修复了 2,370 个错误,解决了 275 个公共问题。高品质是我们一贯坚持的目标,因为我们知道这是提高开发者工作效率的关键。

许多用户在预览版中提供了早期反馈,在此对大家表示感谢。正是有了各位的反馈,Android Studio 4.1 中的功能才得以迭代和改进。如果您已准备好使用这个全新的稳定版本,通过一系列全新的功能提升工作效率,可以在这里 下载 并开始使用。

下面按关键开发流程列出了 Android Studio 4.1 中的所有 新功能

设计

Material Design 组件更新

现在,创建新项目 (New Project) 对话框中的 Android Studio 模板使用 Material Design 组件 (MDC),并且默认支持最新版的主题和样式设计指南。如此一来,开发者可以更轻松地使用推荐的 Material 样式模式,以及支持现代界面功能 (如深色主题)。

更新包括:

  • MDC: 项目使用 build.gradle 中的 com.google.android.material:material。基础应用主题使用 Theme.MaterialComponents 父级,并覆盖更新后的 MDC 颜色和 "on" 属性。
  • 颜色资源: colors.xml 中的颜色资源使用字面名称 (例如,使用 purple_500 而不是 colorPrimary)。
  • 主题资源: 主题资源位于 themes.xml (而非 styles.xml) 中并使用 Theme.<ApplicationName> 名称。
  • 深色主题: 基础应用主题使用 DayNight 父级,并分为 res/values 和 res/values-night
  • 主题属性: 在布局和样式中将颜色资源称为主题属性 (例如 ?attr/colorPrimary),以避免硬编码颜色。

开发

Database Inspector

我们希望借助新的 Database Inspector 来简化应用数据库的检查、查询和修改操作。首先,将您的应用部署到运行 API 26 或更高级别的设备,然后从菜单中依次选择 View > Tool Windows > Database Inspector。无论您的应用是直接使用 Jetpack Room 开发库还是 Android 平台版本的 SQLite,您现在都可以轻松检查正在运行的应用中的数据库和表,或运行自定义查询。

由于 Android Studio 在您检查应用时会保持实时连接,因此您也可以使用 Database Inspector 对数值进行修改,并在运行的应用中查看结果。如果您使用 Room 持久库,Android Studio 还会在代码编辑器的每个查询旁边插入运行按钮,以帮助您快速运行在 @Query 注解中定义的查询。您可以阅读 官方文档 了解详情。

直接在 Android Studio 中运行 Android 模拟器

现在,您可以直接在 Android Studio 中运行 Android 模拟器。此功能有助于节省屏幕空间,您可以使用热键在模拟器和编辑器窗口之间快速导航,并在一个应用窗口中组织您的 IDE 和模拟器工作流。您可以在 Studio 中管理快照以及旋转和截图等常见的模拟器操作,但要使用全部功能选项,仍然需要使用稳定的模拟器。您可以按照这个菜单路径启用此功能: File → Settings → Tools → EmulatorLaunch in Tool Window

image

Dagger 导航支持

Dagger 是 Android 上常用的依赖项注入库。Android Studio 提供了新的 gutter 操作并扩展了 Find Usages 窗口中的支持,使得在 Dagger 相关代码之间导航更加简单。例如,点击使用给定类型的方法旁边的

gutter 操作,会将您导航到提供该类型的位置。相反,点击

image

gutter 操作会将您导航到将类型用作依赖项的位置。Android Studio 还支持对使用 Jetpack Hilt 库定义的依赖项执行导航操作。您可以阅读 官方文档 了解详情。

使用 TensorFlow Lite 模型

目前,Android 开发者纷纷利用机器学习来打造新颖、实用的体验TensorFlow Lite 是常见的用于编写移动端机器学习模型的开发库,我们希望简化将这些模型导入 Android 应用的过程。与视图绑定类似,Android Studio 会生成易于使用的类,帮助您精简运行模型所需的代码并提升类型安全性。ML Model Binding (ML 模型绑定) 当前的实现支持图像分类和风格转换模型,前提是它们通过元数据得到了增强。

要查看导入模型的详细信息以及如何在应用中使用,请双击项目中的 .tflite 模型文件以打开模型查看器页面。您可以阅读 官方文档 了解详情。

image

构建和测试

Android 模拟器 - 可折叠设备铰链信息支持

Android Studio

除了最近新增的 5G 移动网络测试 功能,我们还在 Android 模拟器中增加了对可折叠设备的支持。在 Android 模拟器 30.0.26 及更高版本中,您可以使用多种折叠设计和配置对可折叠设备进行设置。设置完毕后,模拟器将提供铰链角度传感器和姿态变化信息,方便您测试应用在这些机型上的响应情况。请参阅博文《使用 Android 模拟器在 Android 11 上进行开发》了解更多。

Apply Changes 更新

更快的构建有助于开发者更轻松、快速地更改应用。为了帮助您提高应用迭代效率,我们对 Android 11 或更高版本设备的 Apply Changes 进行了多项增强。

我们在优化迭代速度上进行了大力投入,开发出一种无需安装应用即可在设备上部署和保存更改的方法。现在,在完成初始部署后,通过 Apply Code Changes 或 Apply Changes and Restart Activity 对 Android 11 设备进行后续部署的速度大幅提升。我们还在 Apply Changes 中 增加了对其他代码更改的支持。现在,在您添加一个方法后,可点击 Apply Code Changes 或 Apply Changes and Restart Activity 按钮将这些更改部署到正在运行的应用中。

从 AAR 中导出 C/C++ 依赖项

Android Gradle Plugin 4.0 增加了 在 AAR 依赖项中导入 Prefab 软件包 的功能。我们希望扩展此功能以共享原生库。AGP 4.1 支持在 Android 库项目的 AAR 中从外部原生构建中导出库。要导出原生库,请将以下内容添加到库项目 build.gradle 文件的 android 块中:

buildFeatures {
    prefabPublishing true
}

prefab {
    mylibrary {
        headers "src/main/cpp/mylibrary/include"
    }

    myotherlibrary {
        headers "src/main/cpp/myotherlibrary/include"
    }
}

原生代码崩溃报告符号化解析

当原生代码发生崩溃或 ANR 时,系统会生成堆栈轨迹,即程序崩溃前所调用的嵌套函数序列的快照。这些快照可以帮助您识别和修复源代码中的问题,但是必须首先将它们符号化,以将计算机地址转换回人类可读的函数名。

如果您的应用或游戏是使用 C++ 之类的原生代码开发的,那么您现在可以将每个版本应用的调试符号文件上传到 Play 管理中心。Play 管理中心使用这些调试符号文件来符号化您应用的堆栈轨迹,从而简化崩溃和 ANR 分析。如果要将调试符号包含在 App Bundle 中,请将下方内容添加到项目的 build.gradle 文件中:

android.buildTypes.release.ndk.debugSymbolLevel = 'SYMBOL_TABLE'

优化

System Trace 界面改进

在 Android Studio 4.1 中,我们对 System Trace 进行了全面改进,该优化工具可让您实时了解应用对系统资源的使用情况。通过框选模式还可以更轻松地选择跟踪记录,此外,我们还添加了新的分析标签页,并添加了更多的帧渲染数据,以帮助您调查应用界面中的渲染问题。您可以阅读 官方文档 了解详情。

框选 : 在 Threads 部分中,您现在可以拖动鼠标来框选一个矩形区域,并点击右上角的 Zoom to Selection 按钮 (或使用键盘快捷键 M) 来放大该区域。当您将相似的线程拖放到一起后,可以跨多个线程进行框选以同时检查所有线程。

Summary 选项卡: Analysis 面板中全新的 Summary 选项卡会显示以下内容:

  • 特定事件的所有实例的汇总统计信息,例如实例计数和最小/最大持续时间。
  • 选定实例的跟踪事件统计信息。
  • 有关线程状态分布的数据。
  • 所选跟踪事件内运行时间最长的实例。

△ 在 Summary 选项卡中查看汇总统计信息

显示数据: 在 Display 部分,SurfaceFlingerVSYNC 的新时间轴可帮助您调查应用界面中的渲染问题。

独立分析器

现在可以在独立于 Android Studio 主窗口的单独窗口中访问 Android Studio 分析器。在优化使用其他工具 (如 Unity 或 Visual Studio) 构建的 Android 游戏时,此功能十分有用。

要运行独立分析器,请执行以下操作:

  1. 确保您的系统现在没有运行 Android Studio 中的分析器。

  2. 转到安装目录并导航到 bin 目录:

Windows/Linux:

<studio-installation-folder>\bin

macOS:

<studio-installation-folder>/Contents/bin

  1. 根据您的操作系统,运行 profiler.exeprofiler.sh

独立分析器可连接到 Android Emulator 或其他已连接的设备上。

原生内存性能分析器

跟踪原生内存的使用情况对于游戏开发者和其他使用 C++ 的开发者十分重要,他们可以据此优化其应用的内存使用。Android Studio 内存性能分析器 (Memory Profiler) 现在包含一个原生内存性能分析器 (Native Memory Profiler),专门用于运行在 Android 10 或更高版本的实体设备上的应用。原生内存性能分析器可以跟踪特定时间段内原生代码中对象的分配 / 销毁情况,并提供内存总体分配和系统堆剩余大小的信息。

要启动记录,请点击 Memory Profiler 窗口顶部的 Record native allocations:

总结

简要回顾一下,Android Studio 4.1 包括以下新增及改进功能:

设计

  • Material Design 组件更新

开发

  • Database Inspector
  • 直接在 Android Studio 中运行 Android 模拟器
  • Dagger 导航支持
  • 使用 TensorFlow Lite 模型

构建和测试

  • Android 模拟器 - 可折叠设备铰链信息支持
  • Apply Changes 更新
  • 从 AAR 中导出 C/C++ 依赖项
  • 原生代码崩溃报告符号化解析

优化

  • System Trace 界面改进
  • 独立分析器
  • 原生内存性能分析器

文中资料并非由 Unity Technologies 或其附属公司赞助或与其有关联。“Unity”是 Unity Technologies 或其附属公司在美国和其他地区的商标或注册商标。

最后我是小于哥,致力于技术分享和研发,欢迎关注我的微信公众号【终端研发部】,关注即可领取java金九银十面试题1份,觉得不错可以给我三连击哦,奥利给~

作者:谷歌开发者
本文作者 / Scott Swarthout, 产品经理
链接:https://www.jianshu.com/p/fc9f6a5dd52a
来源:简书

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345