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 support-compat-28.0.0-runtime (com.android.support:support-compat:28.0.0)

报错环境:

使用了 ARouter 构建组件化项目使用了 Dokit

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

添加

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选项。

【参考文章】

理解android.enablejetifier=true

好文推荐

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。