1. 报错内容

报错如下:

Caused by: java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules core-1.10.1-runtime (androidx.core:core:1.10.1) and supportcompat-28.0.0-runtime (com.android.support:supportcompat:28.0.0)

image-20231004233808435

报错环境

implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

怀疑可能是二者内部依赖冲突

2. Fix修复

根目录gradle.properties

image-20231004235023446

添加

android.enableJetifier=true

重新Build即可


3. android.enablejetifier=true是什么

3.1 简介

android.enablejetifier=true一个新的构建选项用于自动更新应用程序中使用的废弃Android支持依赖项。

在构建Android应用程序时,为了使用最新的API和Bug修复我们经常依赖于第三方库和支持库。在Android开发中,支持库是不可或缺的一部分。但是,由于废弃的支持库必须被替换给定的AndroidX库,这可能会成为一个挑战。android.enablejetifier=true可以帮助我们解决这个问题

3.2 android.enablejetifier=true是什么

android.enablejetifier=true一个Gradle选项,用于自动更新应用程序中使用的依赖项所需的库(例如,废弃的Android支持库)适用于AndroidX库。

AndroidX是一个重构的支持库。它摆脱了一些历史包名命名空间问题,并提供了新的库来支持最新的Android API。虽然所有现有的第三方库和支持库都需要更新才能与AndroidX兼容,但使用Jetifier(一种二进制文件转换工具可以自动将现有支持库转换为AndroidX依赖项。

3.3 android.enablejetifier=true的作用

由于一些第三方库或依赖系统库仍然使用旧的Android支持库,它们可能无法与新的AndroidX库兼容。因此,当您升级到AndroidX时,Gradle可能会报告许多错误。这也许是因为有一些其他的库无法兼容AndroidX库。android.enablejetifier=true能够解决这个问题,因为它将旧支持库替换为新AndroidX库。

因此,当您升级到AndroidX并启用android.enablejetifier=true时,它将在构建过程中使用Jetifier运行,以确保app使用的所有依赖项都与AndroidX兼容

使用android.enablejetifier=true,您可以实现以下两个功能

将现有支持库转换为AndroidX库。
保持与现有支持库兼容,以确保您的应用程序仍然能够使用旧的支持库。

3.4 android.enablejetifier=true的优缺点

优点:

自动更新旧的支持库为AndroidX库。这样可以避免手动更新所有依赖项的繁琐过程。
保持与旧支持库的兼容性,以确保应用程序能够使用旧的支持库。
能够减少代码需要更改的地方。如果所有依赖项都能自动更新为AndroidX库,就不需要对代码进行更改

缺点:

需要更长的编译时间,因为Gradle编译器需要转换支持库到AndroidX库。
Jetifier无法更新某些依赖项,因此可能需要手动更新一些库以保持与AndroidX兼容。

3.5 结论

android.enablejetifier=true可以为您的应用程序提供更好的兼容性和体验,而无需手动更新所有旧的支持库。虽然它有一些缺点,但优点远高于缺点。如果您正在更新应用程序到AndroidX,我们强烈建议启用android.enablejetifier=true选项。


【参考文章

原文地址:https://blog.csdn.net/weixin_43232955/article/details/133564135

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_9653.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注