androidx.databinding.DataBindingComponent is defined multiple times 错误问题

打包aar的库中引用了databinding的依赖,然后在主工程引入aar时,build release包会报错,debug时正常。

复制代码
Task :app:mergeDexRelease
AGPBI: {"kind":"error","text":"Type androidx.databinding.DataBindingComponent is defined multiple times: D:\\as\\work\\***\\build\\app\\intermediates\\project_dex_archive\\release\\dexBuilderRelease\\out\\androidx\\databinding\\DataBindingComponent.dex, D:\\as\\work\\***\\build\\app\\intermediates\\external_libs_dex\\release\\mergeExtDexRelease\\classes.dex","sources":[{"file":"D:\\as\\work\\***\\build\\app\\intermediates\\project_dex_archive\\release\\dexBuilderRelease\\out\\androidx\\databinding\\DataBindingComponent.dex"}],"tool":"D8"}
com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: 
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Type androidx.databinding.DataBindingComponent is defined multiple times: D:\as\work\***\build\app\intermediates\project_dex_archive\release\dexBuilderRelease\out\androidx\databinding\DataBindingComponent.dex, D:\as\work\***\build\app\intermediates\external_libs_dex\release\mergeExtDexRelease\classes.dex
	at com.android.builder.dexing.D8DexArchiveMerger.getMergingExceptionToRethrow(D8DexArchiveMerger.java:230)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:218)
	at com.android.build.gradle.internal.tasks.DexMergingWorkAction.merge(DexMergingTask.kt:935)
	at com.android.build.gradle.internal.tasks.DexMergingWorkAction.run(DexMergingTask.kt:884)
	at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:210)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: D:\as\work\***\build\app\intermediates\project_dex_archive\release\dexBuilderRelease\out\androidx\databinding\DataBindingComponent.dex
	at Version.fakeStackEntry(Version_8.13.6.java:0)
	at com.android.tools.r8.q0.a(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:1)
	at com.android.tools.r8.internal.is0.a(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:81)
	at com.android.tools.r8.internal.is0.a(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:32)
	at com.android.tools.r8.internal.is0.a(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:31)
	at com.android.tools.r8.internal.is0.b(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:2)
	at com.android.tools.r8.D8.run(R8_8.13.6_1c658b3b683138d620220f6965281391a8f410eddb02f3ff35a06caf88d6c59d:11)
	at com.android.builder.dexing.D8DexArchiveMerger.mergeDexArchives(D8DexArchiveMerger.java:216)
	... 37 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: D:\as\work\***\build\app\intermediates\project_dex_archive\release\dexBuilderRelease\out\androidx\databinding\DataBindingComponent.dex

错误原因,

  1. 库工程引入了databinding的库,导致重复

  2. 库工程依赖的其他库,没有使用databinding的库,也需要开启databinding,然后再打包。
    3.解决方法如下,在依赖的库中,全部指定依赖版本,并用compileOnly 引用。然后打包成aar,放到主工程即可

    复制代码
     compileOnly 'androidx.databinding:databinding-runtime:8.13.0'
     compileOnly 'androidx.databinding:databinding-adapters:8.13.0'
     compileOnly 'androidx.databinding:databinding-ktx:8.13.0'
     compileOnly 'androidx.databinding:databinding-common:8.13.0'
相关推荐
hnlgzb15 天前
androidx.compose.material3哪几个文件是经常用到的?
androidx·compose
urkay-1 个月前
Android Cursor AI代码编辑器
android·人工智能·编辑器·iphone·androidx
urkay-1 个月前
Android 线程详解
android·java·kotlin·iphone·androidx
wxson72822 个月前
【用androidx.camera拍摄景深合成照片】
kotlin·android jetpack·androidx
androidwork6 个月前
Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
android·java·kotlin·androidx
Android 小码峰啊8 个月前
Android Dagger 2 框架的注解模块深入剖析 (一)
android·adb·android studio·android-studio·androidx·android runtime
帅次1 年前
Android CoordinatorLayout:打造高效交互界面的利器
android·gradle·android studio·rxjava·android jetpack·androidx·appcompat
技术无疆1 年前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
技术无疆1 年前
ButterKnife:Android视图绑定的简化专家
android·java·android studio·android-studio·androidx·butterknife·视图绑定