Android Studio Iguana | 2023.2.1 补丁 1
Android Studio Iguana | 2023.2.1 Canary 3
| 已修复的问题 | |||
|---|---|---|---|
| Android Gradle 插件 |
| ||
| 应用质量数据分析 |
| ||
| 基准配置文件和 ProfileInstaller |
| ||
| 代码编辑器 |
| ||
| Gradle 文件编辑器 |
| ||
| 资源 |
| ||
Android Studio Iguana | 2023.2.1 Canary 2
| 已修复的问题 | ||||
|---|---|---|---|---|
| Android Gradle 插件 |
| |||
| Compose 预览 |
| |||
| 设计工具 |
| |||
| 导入/同步 |
| |||
| IntelliJ |
| |||
| 布局编辑器 |
| |||
| lint 集成 |
| |||
| 模块化重构 |
| |||
| Network Inspector |
| |||
| Resource Manager |
| |||
| 运行测试 |
| |||
| 缩减器 (R8) |
| |||
Android Studio Iguana Canary 1 (2023.2.1.1)
| 已修复的问题 | |||||||
|---|---|---|---|---|---|---|---|
| Android Gradle 插件 |
| ||||||
| Android SDK 升级助理 |
| ||||||
| 基准配置文件和 ProfileInstaller |
| ||||||
| Build 变体 |
| ||||||
| C++ Build |
| ||||||
| C++ 编辑器 |
| ||||||
| 代码分析 |
| ||||||
| 调试程序 |
| ||||||
| Gradle 文件编辑器 |
| ||||||
| 导入/同步 |
| ||||||
| 布局编辑器 |
| ||||||
| 布局检查器 |
| ||||||
| Lint |
| ||||||
| Logcat |
| ||||||
| Resource Manager |
| ||||||
| 资源 |
| ||||||
| 运行 |
| ||||||
App Quality Insights 中集成了版本控制系统
借助 App Quality Insights,您现在可以在崩溃发生时从 Crashlytics 堆栈轨迹导航到相关代码。AGP 会将 Git 提交哈希数据附加到崩溃报告,这有助于 Android Studio 找到您的代码并显示该代码在发生问题的版本中的状态。在 App Quality Insights 中查看崩溃报告时,您可以选择前往当前 Git 检出中的代码行,或查看当前检出与生成崩溃的代码库版本之间的差异。
注意 :此功能目前仅支持使用 git 进行版本控制。

如需将版本控制系统与 App Quality Insights 集成,您需要满足以下最低要求:
- 最新的 Canary 版 Android Studio Iguana
- Android Gradle 插件 8.3 的最新 Alpha 版
- Crashlytics SDK v18.3.7(或 Firebase Android 物料清单 v32.0.0)
如需对可调试的 build 类型使用版本控制集成,请在模块级 build 文件中启用 vcsInfo 标记。对于发布(不可调试)build,该标志默认处于启用状态。
在 App Quality Insights 中查看 Crashlytics 崩溃变体
为帮助您分析崩溃的根本原因,您现在可以使用 App Quality Insights 来按问题变体或具有类似堆栈轨迹的事件组查看事件。如需查看崩溃报告的每个变体中的事件,请从下拉列表中选择一个变体。如需汇总所有变体的信息,请选择全部。

Compose 界面检查
为了帮助开发者在 Jetpack Compose 中构建更具自适应能力和无障碍功能的界面,Android Studio Iguana Canary 5 在 Compose 预览版中引入了全新的界面检查模式。此功能与针对视图的视觉 lint 检查和无障碍功能检查集成类似。当您激活 Compose UI 检查模式时,Android Studio 会自动审核您的 Compose 界面,并检查在不同屏幕尺寸上是否存在自适应和无障碍功能问题,例如文本在大屏幕上拉伸或色彩对比度较低。该模式会突出显示在不同预览配置中发现的问题,并在问题面板中列出这些问题。
请点击 Compose 预览中的界面检查按钮
,立即试用此功能,并发送您的反馈:
界面检查模式的已知问题:
- 问题面板中的所选问题可能会失去焦点
- “禁止规则”不起作用
已激活 Compose 界面检查模式,并在问题面板中显示详细信息。
Compose 预览的渐进式渲染方式
Android Studio Iguana Canary 3 在 Compose 预览版中引入了渐进式渲染功能。为持续改进预览性能,我们现在对于不在视图范围内的任何预览,我们会特意降低其渲染质量以节省内存用量。
IntelliJ IDEA 2023.2 平台更新
Android Studio Iguana 包含 IntelliJ IDEA 2023.2 更新,这些更新改进了 Studio IDE 体验。如需详细了解相关变更,请参阅 IntelliJ IDEA 2023.2 版本说明。
基准配置文件模块向导
从 Android Studio Iguana 开始,您可以使用新模块向导中的 Baseline Profile Generator 模板(File > New > New Module)为应用生成基准配置文件。

此模板会设置您的项目,以使其支持基准配置文件。它使用新的基准配置文件 Gradle 插件,该插件可以执行一项 Gradle 任务以所需方式自动执行项目设置流程。
该模板还会创建一个运行配置,您只需从 Select Run/Debug Configuration 下拉列表中点击一下,即可生成基准配置文件。

使用 Espresso Device API 测试配置更改
当设备发生常见配置更改(例如旋转和屏幕展开)时,您可以使用 Espresso Device API 测试应用。借助 Espresso Device API,您可以在虚拟设备上模拟这些配置更改并同步执行测试,因此一次仅发生一项界面操作或断言,并且测试结果更加可靠。详细了解如何使用 Espresso 编写界面测试。
如需使用 Espresso Device API,您需要以下各项:
- Android Studio Iguana 或更高版本
- Android Gradle 插件 8.3 或更高版本
- Android 模拟器 33.1.10 或更高版本
- 搭载 API 级别 24 或更高级别的 Android 虚拟设备
针对 Espresso Device API 设置项目
如需设置项目以使其支持 Espresso Device API,请执行以下操作:
-
如需让测试将命令传递给测试设备,请将
INTERNET和ACCESS_NETWORK_STATE权限添加到androidTest源代码集内的清单文件中:<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" /> -
在
gradle.properties文件中启用enableEmulatorControl实验性标志:android.experimental.androidTest.enableEmulatorControl=true -
在模块级构建脚本中启用
emulatorControl选项:testOptions {emulatorControl {enable = true}} -
在模块级构建脚本中,将 Espresso 设备库导入您的项目中:
dependencies {androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")}
针对常见的配置更改进行测试
Espresso Device API 具有多个屏幕方向和可折叠状态,可用于模拟设备配置更改。
针对屏幕旋转进行测试
以下示例展示了如何测试设备屏幕旋转时应用会发生什么情况:
-
首先,为了保持一致的起始状态,请将设备设置为竖屏模式:
import androidx.test.espresso.device.action.ScreenOrientationimport androidx.test.espresso.device.rules.ScreenOrientationRule...@get:Ruleval screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT) -
创建一个在测试执行期间将设备设置为横向的测试:
@Testfun myRotationTest() {...// Sets the device to landscape orientation during test execution.onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)...} -
在屏幕旋转后,检查界面是否按预期适应新布局:
@Testfun myRotationTest() {...// Sets the device to landscape orientation during test execution.onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()}
针对屏幕展开进行测试
以下示例展示了如何测试应用在可折叠设备上且屏幕展开时会发生什么情况:
-
首先,通过调用
onDevice().setClosedMode()对处于折叠状态的设备进行测试。确保应用的布局适应较小的屏幕宽度:@Testfun myUnfoldedTest() {onDevice().setClosedMode()composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()...} -
如需转换为完全展开状态,请调用
onDevice().setFlatMode()。检查应用的布局能否适应较大尺寸类:@Testfun myUnfoldedTest() {onDevice().setClosedMode()...onDevice().setFlatMode()composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()}
指定测试所需的设备
如果您运行在不可折叠的设备上执行折叠操作的测试,该测试通常会失败。如需仅执行与正在运行的设备相关的测试,请使用 @RequiresDeviceMode 注解。该测试运行程序会在不支持被测配置的设备上自动跳过运行测试。您可以将设备要求规则添加到每个测试或整个测试类中。
例如,如需指定应仅在支持展开为平面配置的设备上运行测试,请将以下 @RequiresDeviceMode 代码添加到测试中:
@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {...
}相关文章:
Android Studio Iguana | 2023.2.1 补丁 1
Android Studio Iguana | 2023.2.1 Canary 3 已修复的问题Android Gradle 插件 问题 295205663 将 AGP 从 8.0.2 更新到 8.1.0 后,任务“:app:mergeReleaseClasses”执行失败 问题 298008231 [Gradle 8.4][升级] 由于使用 kotlin gradle 插件中已废弃的功能&#…...
iOS17 隐私协议适配详解
1. 背景 网上搜了很多文章,总算有点头绪了。其实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。 WWDC23 中关于隐私部分的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的…...
LeetCode 每日一题 Day 116-122
2580. 统计将重叠区间合并成组的方案数 给你一个二维整数数组 ranges ,其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。 你需要将 ranges 分成 两个 组(可以为空…...
linux离线安装jenkins及使用教程
本教程采用jenkins.war的方式离线安装部署,在线下载的方式会遇到诸多问题,不宜采用 基本环境: 1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。 2.git/svn客户端,因一般代码是放在git/svn服务器上的&a…...
NXP-S32DS软件安装
文章目录 一、安装包获取二、S32DS安装三、芯片插件安装 一、安装包获取 登录NXP官网,进入软件目录https://www.nxp.com/ 下载S32DS软件和RTD驱动库,并安装S32DS软件。 单击“S32DS.3.5_b220726_win32.x86_64.exe”下载该软件 点击“License Keys”&…...
26版SPSS操作教程(初级第十五章)
前言 #由于导师最近布置了学习SPSS这款软件的任务,因此想来平台和大家一起交流下学习经验,这期推送内容接上一次第十四章的学习笔记,希望能得到一些指正和帮助~ 粉丝及官方意见说明 #针对官方爸爸的意见说的推送缺乏操作过程的数据案例文件…...
docker部署实用的运维开发手册
下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestdocker-compose部署 vim docker-compose.yml version: 3 services:reference:container_name: referenceimage: registry.cn-beijing.aliyuncs.com/wuxingge123/reference:latestports:…...
Oracle VM(虚拟机)性能监控工具
Oracle VM是一个独立的虚拟化环境,由 Oracle 提供支持和设计,旨在为运行虚拟机提供轻量级、安全的基于服务器的平台。Oracle VM 能够在受支持的虚拟化环境中部署操作系统和应用软件,Oracle VM 将用户和管理员与底层虚拟化技术隔离开来&#x…...
1.8 python 模块 time、random、string、hashlib、os、re、json
ython之模块 一、模块的介绍 (1)python模块,是一个python文件,以一个.py文件,包含了python对象定义和pyhton语句 (2)python对象定义和python语句 (3)模块让你能够有逻辑地…...
iOS苹果签名共享签名是什么以及如何获取?
哈喽,大家好呀,咕噜淼淼又来和大家见面啦,最近有很多朋友都来向我咨询共享签名iOS苹果IPA共享签名是什么,针对这个问题,淼淼来解答一下大家的疑惑并告诉大家iOS苹果ipa共享签名需要如何获取。 现在苹果签名在市场上的…...
python爬虫下载音乐
本文使用创作助手。 你可以使用Python的requests库来实现爬虫下载音乐。以下是一个简单的示例代码: import requestsdef download_music(url, file_path):response requests.get(url)with open(file_path, wb) as file:file.write(response.content)print(f"…...
HarmonyOS实战开发-一次开发,多端部署-视频应用
介绍 随着智能设备类型的不断丰富,用户可以在不同的设备上享受同样的服务,但由于设备形态不尽相同,开发者往往需要针对具体设备修改或重构代码,以实现功能完整性和界面美观性的统一。OpenHarmony为开发者提供了“一次开发&#x…...
关于v114之后的chromedriver及存放路径
使用selenium调用浏览器时,我一直调用谷歌浏览器,可浏览器升级后,就会再次遇到以前遇到过的各种问题,诸如:1、怎么关闭浏览器更新;2、去哪儿下载chromedriver;3、114版本之后的驱动去哪儿下载&a…...
http模块 服务器端如何响应(获取)静态资源?
一、静态资源与动态资源介绍: (1)静态资源 内容长时间不改变的资源。eg:图片、视频、css js html文件、字体文件... (2)动态资源 内容经常更新的资源。eg:百度首页、淘宝搜索列表... 二、服…...
基于PHP的校园招聘管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的校园招聘管理系统 一 介绍 此校园招聘管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为个人用户,企业和管理员三种。 技术栈:phpmysqlbootstrapphpstudyvscode 二…...
LLMs 可能在 2 年内彻底改变金融行业
在艾伦图灵研究所(The Alan Turing Institute)最新的一项研究中,我们看到了大型语言模型(Large Language Models,LLMs)的一种可能性。它有望通过检测欺诈行为、生成财务洞察以及自动化客户服务,…...
nodejs 中 yarn的安装和使用
Yarn是一个快速、可靠、易于使用的包管理工具,它是Facebook、Google、Tencent等公司使用的默认JavaScript包管理工具。Yarn可以帮助开发者在项目中管理依赖,确保不同环境之间的依赖一致性,并且加速依赖的下载和安装。 安装Yarn Yarn支持多种操作系统,包括macOS、Linux和W…...
软件工程学习笔记14——案例解析篇
案例解析篇 一、大型开源项目对软件工程的应用1、开发迭代过程 二、大厂是怎样应用软件工程的1、软件项目开发团队组成(1)软件开发团队规模小(2)没有专职测试(3)DevOps 文化 2、开发工具的使用3、项目开发流…...
【文件操作API的使用】
1.概念 这对聪明的你们来说简直就是,对吗。 那什么是文件操作符,文件操作又有哪些步骤呢? 文件操作符通常用于指代在计算机编程中用于处理文件的特殊符号或标识符。在很多编程语言中,文件操作符被用于打开、关闭、读取和写入文件…...
C++ 让类只在堆或栈上分配
1. 让类只在栈上或堆上分配内存 在C中,类的对象建立分为两种: 一种是静态建立,如A a; 另一种是动态建立,如A* ptrnew A;这两种方式是有区别的。 1、静态建立类对象:是由编译器为对象在栈空间…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
