Android Studio Iguana | 2023.2.1 补丁 1

news2024/11/17 6:32:34

 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 插件中已废弃的功能,升级后集成测试失败

应用质量数据分析

问题 299176609

AQI 工具窗口始终显示事件计数中的用户计数

问题 298077908

App Quality Insight 显示无效的操作系统版本

基准配置文件和 ProfileInstaller

问题 298011132

Gradle 插件与 8.3 alpha 不兼容

代码编辑器

问题 297790370

基于不正确的设置值,在布局 XML 文件上触发了“Incorrect formatting”错误。

Gradle 文件编辑器

问题 295282939

当名称嵌套时,版本目录显示 Groovy 中未使用的符号

资源

问题 295349275

Android Studio 因间接资源引用重复名称而挂起

 Android Studio Iguana | 2023.2.1 Canary 2

已修复的问题
Android Gradle 插件

问题 265296706

最低 Gradle 版本检查不会在第二次构建及之后运行

Compose 预览

问题 246917880

在预览互动模式下,DropdownMenu 在错误位置展开

问题 248802205

使用振动器的代码导致 Compose 预览崩溃

问题 262773698

使用带 b 标记的 HTML 文本时,Compose 预览会损坏

设计工具

问题 268488795

插入标签页 widget 时,设计界面变成空白

导入/同步

问题 294906020

在 Gradle 同步期间,Studio 报告不支持的模块

问题 297140433

项目同步后出现含糊不清的错误消息/警告

IntelliJ

问题 297469867

Android Studio Iguana - 启动失败 - BytecodeTransformerAdapter 中的 NPE 问题

布局编辑器

问题 226457466

无法将 BufferedInputStream 转换为 AssetManager$AssetInputStream 类

lint 集成

问题 294385251

来自 testImplementation 依赖项的 DuplicatePlatformClasses lint 错误

模块化重构

问题 296548370

模块化不按任何特定顺序列出模块

Network Inspector

问题 298083864

日志中的错误消息:“lateinit property model has not been initialized”

Resource Manager

问题 223815263

Resource Manager 不显示具有自定义颜色属性的可绘制对象

问题 173833413

Resource Manager 裁剪了某些矢量可绘制对象

运行测试

问题 297168330

单元测试不会重新运行

缩减器 (R8)

问题 293820078

从 AGP 8.0.2 升级到 8.1.0 后 R8 无法工作

 Android Studio Iguana Canary 1 (2023.2.1.1)

已修复的问题
Android Gradle 插件

问题 292114808

PackageForUnitTest 任务的构建缓存是多余的

问题 293547829

[AGP 8.1.0] 如果 splits.abi.isEnable 和 testOptions.unitTests.isIncludeAndroidResources 均为 True,./gradlew 测试会失败,并且显示“Unable to find manifest output”

问题 278096743

使用嵌套 Gradle 复合 build 时,AGP 模型构建失败

问题 296250243

资源缩减器会破坏资源 ID,从而导致运行时崩溃

Android SDK 升级助理

问题 294886632

目标 SDK 升级助理从不加载

基准配置文件和 ProfileInstaller

问题 290949425

Profgen - 同时输出所有 DM 文件的选项

Build 变体

问题 140098942

在默认变体发生变化时切换使用中的变体

问题 201824664

“Build Variants”窗口中的冲突应该在使用方项目(而非生产方)上

C++ Build

问题 290623939

C++ 插件在 gradlew 上报告预处理器错误

C++ 编辑器

问题 294137065

不断更新符号,这会阻碍构建

问题 288443830

没有 C/C++ 项目时的短路 C/C++ 分析

代码分析

问题 158189488

Proguard awareness 突出显示 @interface 类型无效

调试程序

问题 182008129

Compose 预览会尝试打开外部库

问题 294485700

JVM_IR 评估表达式无法使用 SAM 封装容器评估 fragment

问题 182008659

对于 Compose 预览,拆分视图似乎过于激进

Gradle 文件编辑器

问题 294927651

[版本目录] 在软件包中使用时,未使用的依赖项别名出现误报

导入/同步

问题 295146529

“Gradle JDK”的界面无法同步字段内容

问题 291935296

仍在使用 GradleProjectInfo.setSkipStartupActivity

问题 290954881

无法让工作进度正常运行。

问题 155006667

在 Android 模块的 gutter 中隐藏 Java 主要方法运行配置

问题 295337712

Studio 无法处理包含符号链接的 build

布局编辑器

问题 293553704

当光标四处移动时,XML 设计预览大小会重置

问题 293920480

布局 xml: design-left-component 树,选择一个组件后无法使用 ctrl+B 热键进行编码

布局检查器

问题 295205671

当布局检查器处于活动状态时,调试应用有时会崩溃

Lint

问题 291319992

[lint] TranslucentViewDetector 在 filterIncident 函数中崩溃,并导致 lint 生成错误的结果

问题 292114818

TranslucentViewDetector 应接受“behind”值

问题 293900782

Android Lint 在 KMP 库上失败,并提示属性“variantInputs.name”没有配置值。

问题 292069881

TranslucentViewDetector 报告清单中有错误的行

问题 290794202

使用项目依赖项时,lintDebug 误报 UseTomlInte 警告

问题 294279964

Android Lint 标记的另一个项目中出现意外问题

Logcat

问题 295282547

无法更改 Logcat 标记指示器的颜色

问题 293789640

Logcat 软封装不起作用

Resource Manager

问题 291042263

Create Resource 文件夹缺少目录

资源

问题 265199079

查找使用情况/找到定义不适用于 AndroidTest 资源

问题 242260654

AndroidTest 不会解析资源引用

问题 257997627

AndroidTest 源代码集无法识别库的 R 类

运行

问题 293920479

无法在运行/调试配置中保存动态功能设置

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 UI Check 模式按钮以激活检查。

界面检查模式的已知问题:

  • 问题面板中的所选问题可能会失去焦点
  • “禁止规则”不起作用
    已激活 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,请执行以下操作:

  1. 如需让测试将命令传递给测试设备,请将 INTERNET 和 ACCESS_NETWORK_STATE 权限添加到 androidTest 源代码集内的清单文件中:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permissions.ACCESS_NETWORK_STATE" />
  2. 在 gradle.properties 文件中启用 enableEmulatorControl 实验性标志:

      android.experimental.androidTest.enableEmulatorControl=true
  3. 在模块级构建脚本中启用 emulatorControl 选项:

      testOptions {
        emulatorControl {
          enable = true
        }
      }
  4. 在模块级构建脚本中,将 Espresso 设备库导入您的项目中:

      dependencies {
        androidTestImplementation("androidx.test.espresso:espresso-device:3.5.1")
      }

针对常见的配置更改进行测试

Espresso Device API 具有多个屏幕方向和可折叠状态,可用于模拟设备配置更改。

针对屏幕旋转进行测试

以下示例展示了如何测试设备屏幕旋转时应用会发生什么情况:

  1. 首先,为了保持一致的起始状态,请将设备设置为竖屏模式:

      import androidx.test.espresso.device.action.ScreenOrientation
      import androidx.test.espresso.device.rules.ScreenOrientationRule
      ...
      @get:Rule
      val screenOrientationRule: ScreenOrientationRule = ScreenOrientationRule(ScreenOrientation.PORTRAIT)
  2. 创建一个在测试执行期间将设备设置为横向的测试:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        ...
      }
  3. 在屏幕旋转后,检查界面是否按预期适应新布局:

      @Test
      fun myRotationTest() {
        ...
        // Sets the device to landscape orientation during test execution.
        onDevice().setScreenOrientation(ScreenOrientation.LANDSCAPE)
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assertDoesNotExist()
      }
针对屏幕展开进行测试

以下示例展示了如何测试应用在可折叠设备上且屏幕展开时会发生什么情况:

  1. 首先,通过调用 onDevice().setClosedMode() 对处于折叠状态的设备进行测试。确保应用的布局适应较小的屏幕宽度:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        composeTestRule.onNodeWithTag("BottomBar").assetIsDisplayed()
        composeTestRule.onNodeWithTag("NavRail").assetDoesNotExist()
        ...
      }
  2. 如需转换为完全展开状态,请调用 onDevice().setFlatMode()。检查应用的布局能否适应较大尺寸类:

      @Test
      fun myUnfoldedTest() {
        onDevice().setClosedMode()
        ...
        onDevice().setFlatMode()
        composeTestRule.onNodeWithTag("NavRail").assertIsDisplayed()
        composeTestRule.onNodeWithTag("BottomBar").assetDoesNotExist()
      }

指定测试所需的设备

如果您运行在不可折叠的设备上执行折叠操作的测试,该测试通常会失败。如需仅执行与正在运行的设备相关的测试,请使用 @RequiresDeviceMode 注解。该测试运行程序会在不支持被测配置的设备上自动跳过运行测试。您可以将设备要求规则添加到每个测试或整个测试类中。

例如,如需指定应仅在支持展开为平面配置的设备上运行测试,请将以下 @RequiresDeviceMode 代码添加到测试中:

@Test
@RequiresDeviceMode(mode = FLAT)
fun myUnfoldedTest() {
  ...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序员也写歌啦

我的第一首AI原创歌曲《旅途的歌声》 身为 AI 重度患者的我&#xff0c;时刻关注着每天发布的各种 AI 产品。面对这些雨后春笋般的 AI 产品&#xff0c;我也早就没那么敏感了。 但是今天尝试着用 AI 生成了一个音乐&#xff0c;真的震惊到了我&#xff01; 不到一分钟&#…

2024年第六届机器人系统与自动化工程国际会议(RSAE 2024)即将召开!

2024年第六届机器人系统与自动化工程国际会议&#xff08;RSAE 2024&#xff09;将于2024年6月21-23日在日本东京召开。RSAE 2024 的主要目标是加强合作&#xff0c;并为院士、专业人士和研究人员提供一个论坛&#xff0c;交流他们的研究成果、创新理念和解决方案&#xff0c;包…

算法打卡day29|贪心算法篇03|Leetcode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果

算法题 Leetcode 1005.K次取反后最大化的数组和 题目链接:1005.K次取反后最大化的数组和 大佬视频讲解&#xff1a;K次取反后最大化的数组和视频讲解 个人思路 思路清晰&#xff0c;因为是取反当然是取越小的负数越好&#xff0c;那么先按绝对值排序。如果是负数就取反&#…

Tomcat 下载以及安装

Tomcat安装及配置教程主要分为四步&#xff1a; 步骤一&#xff1a;首先确认自己是否已经安装JDK 1. cmd&#xff1a;查看java的版本 步骤二&#xff1a;下载安装Tomcat 1. 下载tomcat :Apache Tomcat - Welcome! 2. 选择对应的tomcat版本&#xff1a; 3. 进行安装&#…

左值引用、右值引用及移动语义

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 左值 概念 可以取到地址的值就是左值&#xff0c;并且一般情况下可以修改&#xff08;const类型左值不可修改&#xff09;。 左值举例&#xff1a; //左值 int a 0; const int b 1; int* p &a; 右值 概念 不能…

虚拟ECU:汽车空调压缩机控制系统

2024年是“十四五”的“关键一年”&#xff0c;在中国居民生活水平不断上升的趋势下&#xff0c;人们对汽车的需求已不再局限于简单的代步工具&#xff0c;而对其整体的舒适度和体验度也有着越来越高的要求。作为提升驾车与乘车体验的重要部分&#xff0c;汽车的空调系统在电动…

3D软件坐标系速查

本文介绍不同3D软件的世界坐标系之间的差异及其工作原理。 基本上&#xff0c;游戏引擎和3D软件包最重要的问题是根据软件的坐标轴系统创建资产&#xff0c;正确缩放它们并根据要完成的工作设置枢轴系统。 坐标系正确性的定义可能会根据模型导入的游戏引擎或 3D 软件而变化。…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件&#xff1f;&#xff0c;上一篇已经分享了如何找到第三方插件&#xff0c;也找到了插件flask-mail的使用文档&#xff0c;那我们就来实战吧 二、根据文档&#xff0c;总结发送邮件的流程 从文档中可以总结出发送邮件的步…

【JavaScript】JavaScript 程序流程控制 ⑦ ( do-while 循环概念 | do-while 循环语法结构 )

文章目录 一、while 循环1、while 循环概念2、do-while 循环语法结构 二、do-while 循环代码示例1、打印 1-5 数字2、打印 1-10 累加和 一、while 循环 1、while 循环概念 JavaScript 中的 do-while 循环 是 while 循环的变体 , 是 一种 后测试 循环 , 该循环的 循环体 至少执行…

Lazada、shopee自养号测评环境搭建需要准备哪些?

在如今电商竞争日益激烈的环境下&#xff0c;卖家们深知流量对店铺转化率的至关重要性。依赖平台内部的流量已不再足够&#xff0c;越来越多的卖家开始探索其他方式来提升销售业绩和品牌知名度。其中&#xff0c;自养号测评成为了一种备受关注的策略&#xff0c;通过搭建独立运…

零基础自学C语言|文件操作

✈为什么使用文件&#xff1f; 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化…

OSPF-区域间路由计算

一、概述 前面学习了我们学习了Router-LSA和Network-LSA&#xff0c;它们都只能在区域内进行泛洪&#xff0c;而且我们之前一直主要是单区域学习。OSPF的核心是骨干区域Area 0&#xff0c;其它都为非骨干区域。但是在大型网络中&#xff0c;单区域OSPF会存在一定的问题&#xf…

Hack The Box-Headless

目录 信息收集 nmap whatweb WEB web信息收集 dirmap 可利用点分析 xss攻击 RCE漏洞 提权 get user get root 信息收集 nmap 端口探测┌──(root㉿ru)-[~/kali/hackthebox] └─# nmap -p- 10.10.11.8 --min-rate 10000 …

使用docker-compose搭建wordpress博客

1、从远程仓库拉取worldpress镜像到本地 2、新建一个项目&#xff0c;然后在新建的项目目录里面新建一个docker-compose.yml模版文件。 3、编写docker-compose.yml文件 4、docker-compose up 运行项目。 5、在浏览器测试 使用docker-compose搭建wordpress博客实验成功。

三相四线智能电表直接接入式接线图

大家好&#xff0c;今天我们要聊的是三相四线智能电表的直接接入式接线方式。别担心&#xff0c;我会用简单易懂的语言来解释这个看似复杂的主题。 首先&#xff0c;我们得知道什么是三相四线电表。在我们的生活中&#xff0c;电力供应通常分为单相和三相。三相电&#xff0c;就…

Python中的数据类型有四类八种如何理解?

在Python中&#xff0c;数据类型大致可以分为四大类&#xff0c;包含了八种基本的数据类型&#xff0c;这些分类有助于理解和使用Python进行编程。这四大类分别是&#xff1a; 数字类型 (Numeric Types): 整型 (int): 表示没有小数部分的整数&#xff0c;可以是正数、负数或零。…

【爬虫基础】第2讲 使用Urllib库创建第一个爬虫程序

Urllib 是 Python 的标准库&#xff0c;它提供了一系列用于处理 URL 的函数和类&#xff0c;包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。 request&#xff1a;它是最基本的HTTP请求模块&#xff0c;可以用来模拟发送请求。只…

如何利用OpenCV4.9离散傅里叶变换

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:如何利用OpenCV4.9 更改图像的对比度和亮度 下一篇: 目标 我们将寻求以下问题的答案&#xff1a; 什么是傅里叶变换&#xff0c;为什么要使用它&#xff1f;如何在 OpenCV 中做到这一点…

Spring6 (1)

Spring 1、简介&#xff1a;2、第一个程序2、set注入2.1 简单数据类型2.2测试2.3 注入Properties2.4 p命名空间注入2.5 c命名空间注入2.6 util注入2.6 引入外部配置文件 1、简介&#xff1a; 自己的理解&#xff1a;spring其实就是一个容器&#xff0c;也可以说是一个框架&…

腾讯云轻量4核8G12M服务器配置4C8G12M详解

4核8G是云服务器的参数&#xff0c;代表云服务器的硬件配置和网络带宽&#xff0c;4核代表CPU、8G是指内存、12M代表带宽值为12Mbps&#xff0c;腾讯云百科txybk.com以腾讯云轻量应用服务器4核8G12M带宽配置为例&#xff0c;来详细介绍下服务器参数&#xff1a; 4c8g是什么意思…