首页 > 编程问答 >添加带有共享元素过渡的合成动画库时,合成项目会崩溃

添加带有共享元素过渡的合成动画库时,合成项目会崩溃

时间:2024-05-30 14:11:40浏览次数:27  
标签:android android-jetpack-compose android-jetpack-compose-animation

我使用的是 compose-bom 2023.03.00 版本,当我尝试添加最新的带有共享元素更新的编译动画模块时,应用程序会在启动时崩溃并显示错误

java.lang.NoSuchMethodError:在类 Landroidx/compose/ui/unit/Constraints$Companion 或其超类中没有静态方法 restrictedConstraints-xF2OJ5Q$default(Landroidx/compose/ui/unit/Constraints$Companion;IIIIZILjava/lang/Object;)J (声明 'androidx.compose.ui.unit.Constraints$Companion' 出现在 /data/app/com.xx.xxxx-55o2y0IBA6N3Qr0mj4DgbQ==/base.apk

中。

at androidx.compose.foundation.layout.RowColumnMeasurementHelper.measureWithoutPlacing-EkL-Y(RowColumnMeasurementHelper.kt:187) at androidx.compose.foundation.layout.RowColumnMeasurePolicy.measure-3p2s80s(RowColumnImpl.kt:69) at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:135) at androidx.compose.foundation.layout.SizeNode.measure-3p2s80s(Size.kt:838)

仅添加依赖本身就会导致崩溃(未添加任何 ShareElementsLayout 等)。

在示例应用程序中,它工作正常。这是因为与其他编译库的兼容性问题吗?我怎样才能找到不兼容问题?

我尝试匹配示例应用程序的依赖版本,但在我们的主应用程序中也发现了其他库。

它也造成了同样的崩溃。


你遇到的错误是因为 Compose UI 库中的版本冲突造成的。具体来说,你的应用中某个地方在调用 androidx.compose.ui.unit.Constraints.Companion 类中不存在的 restrictedConstraints-xF2OJ5Q$default 方法。这表明你使用的一个或多个依赖项依赖于 Compose UI 的旧版本,该版本不包含此方法。

以下是一些解决该问题的步骤:

1. 确定冲突的依赖项:

  • 检查你的 build.gradle 文件:仔细检查你的 dependencies 部分,特别是与 Compose 相关的库。确保所有 Compose 库都使用相同的版本(来自你的 compose-bom)。
  • 使用 Android Studio 的 “Dependencies” 工具:打开你的 build.gradle 文件,右键单击 dependencies 部分,然后选择 “Show Dependencies”。这将以图形方式显示你的项目依赖关系,并可能帮助你识别冲突。
  • 使用 Gradle 命令:运行 ./gradlew app:dependencies 命令。这将在控制台中打印你的项目依赖关系树。查找 androidx.compose.ui:ui 并查看哪些依赖项正在使用不同的版本。

2. 解决冲突:

  • 升级冲突的依赖项:一旦确定了哪些依赖项导致冲突,请尝试将它们升级到与你的 compose-bom 兼容的最新版本。
  • 排除传递依赖项:如果无法升级冲突的依赖项,则可以使用 exclude 关键字从其他依赖项中排除它。例如,如果 libraryA 依赖于 Compose UI 的旧版本,则可以在依赖 libraryA 时将其排除:
dependencies {
    implementation("com.example:libraryA") {
        exclude(group = "androidx.compose.ui", module = "ui")
    }
}

3. 清理和重建项目:

完成上述步骤后,请务必清理和重建你的项目:

  • “Clean Project”: 在 Android Studio 中,转到 “Build” > “Clean Project”。
  • “Rebuild Project”: 在 Android Studio 中,转到 “Build” > “Rebuild Project”。

通过仔细检查你的依赖关系并解决任何版本冲突,你应该能够解决 NoSuchMethodError 错误并成功使用 Compose Animation 库中的共享元素更新功能。

标签:android,android-jetpack-compose,android-jetpack-compose-animation
From: 78553164

相关文章

  • Android 14.0 启动app时设置密码锁
    1.前言在14.0的系统产品开发中,对于限制某些app的启动的功能中,在项目中的需求是在点击app启动的时候,根据包名设置密码锁,当输入正确的密码的时候来启动这个app,否则就不能启动这个app,达到限制使用app的目的,这就需要在app启动的时候,检测app的包名,然后在app启动的时候弹出输入密......
  • 基于Android的高校心理咨询系统论文
    摘要基于Android平台的高校心理咨询系统结合了现代移动技术与心理健康理念,旨在为高校学生提供一个便捷、高效的心理咨询平台。该系统通过安卓应用的形式,实现了用户注册、登录、在线咨询、心理测试、预约咨询、心理知识等功能。用户可以通过手机随时随地访问系统,获取专业的......
  • Android基础-初识Android系统架构
    Android系统架构详解Android系统作为一款广泛应用于智能手机、平板电脑等设备的操作系统,其架构的设计对于系统的稳定性、可扩展性和用户体验至关重要。Android系统架构是一个复杂的层次结构,旨在实现硬件与软件之间的高效协同工作,为用户提供丰富的功能和良好的体验。以下是对An......
  • Android基础-Activity的介绍
    在Android系统中,Activity是一个重要的组件,它承载了用户与应用之间的交互界面。以下是关于Activity的功能、作用以及生命周期的详细介绍。Activity的功能和作用提供用户界面:Activity是Android应用程序中用于表示一个屏幕或用户界面的组件。它负责展示应用程序的用户界面,如......
  • Android基础-Service的介绍
    在Android系统中,Service是一个重要的后台组件,用于执行长时间运行的操作,而不需要提供用户界面。以下是对Service的功能、作用以及生命周期的详细介绍。Service的功能和作用后台执行:Service允许应用程序在后台执行操作,即使用户没有与应用进行直接交互。这使得Service成为处......
  • Android 四大组件 service
    前言在Android系统中,Service是一个用来执行长时间运行的操作而不提供用户界面的应用组件。它可以在后台执行任务,即使用户切换到其他应用也不会被中断。Service在Android中主要用于在后台执行长时间运行的任务,例如播放音乐、执行文件下载、处理网络请求等。尽管Service运行......
  • Android 图片加载glide库 一次通关
    前言Glide是一个由Bumptech开发的开源图片加载库,专门用于Android平台。它被广泛应用于Android应用中,以简化图片加载过程,并提高性能和效率。Glide能够快速加载图片,同时减少页面加载时间和内存消耗。Glide具有强大的缓存机制,支持内存缓存和磁盘缓存,有效地减少重复的图片加载请......
  • 升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0 uniapp、vue、android、web 框
    升鲜宝供应链管理系统重构版发布(技术点:Java8、mysql8.0uniapp、vue、android、web框架:Vue3+SpringBoot3),界面功能(三) 主要功能要点:     权限管理(组织机构、用户管理、角色管理、岗位管理)     系统设置(菜单管理、参数管理、数据字典、定时任务、文件管......
  • docker安装jenkins+Android sdk
    1、宿主机安装Java环境参考这个链接:https://www.cnblogs.com/likecoke/p/13638419.html2、宿主机安装 AndroidSDK2.1下载zip包wgethttps://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip2.2解压到 /home/android-sdk路径下unzip-d/hom......
  • Android14音频进阶之dump各阶段音频数据<Tee Sink方案>(七十五)
    简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】......