Android 开发遇到的问题 移植第三方AAR库时报错Execution failed for task ‘:app:mergeDebugResources‘.

依赖第三方AAR库时遇到的问题。Execution failed for task ':app:mergeDebugResources'.
> java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT error: check logs for details

错误提示:

> Task :app:mergeDebugResources FAILED

Execution failed for task ':app:mergeDebugResources'.
> java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT error: check logs for details

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResources'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
    at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
    at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)

原因:

报错信息自己分析不出有用的,用这个报错在网上找了好多方法,试了好久,最后找到解决我这个问题的方法。整合一下在网上找的方法,以供学习。

方法一:

可能原因:可能是图片的格式不对,例如将图片原本的jpg后缀名改成了png。

正确的做法应该是编辑图片,另存为png格式,再替换。

图片导致的问题还有Android studio对审查图片格式和大小太严格了。

可以试着添加这行代码到你的主工程文件夹里的build.gradle里。



//逃避图片审查
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false

像这样: 

android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"

//逃避图片审查
    aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    signingConfigs {

这个方法我试了,对解决我这个问题并没有效果。。。

方法二:

原因:

Android Gradle插件版本。对比可以依赖这个架包的插件版本发现报错的插件版本比较低

classpath 'com.android.tools.build:gradle:3.2.1'

而正常依赖的未报错版本为

classpath 'com.android.tools.build:gradle:3.4.2'

将报错版本升级到3.4.2,就不在报Execution failed for task ':app:mergeDebugResources'.
> java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT error: check logs for details这两个错误了。问题解决。但是再次编译还是报错:

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:checkDebugDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: java.lang.RuntimeException: Duplicate class com.imagealgorithmlab.barcode.DecodeEngine found in modules DecodeLibrary_u4.0.jar (:sdkLibs-v61:) and jetified-DecodeLibrary.jar (DecodeLibrary.jar)

这个问题就好解决了,分析错误信息,将有冲突的架包去掉。(这里需要依赖的第三方AAR是sdkLibs-v61,其中包含的架包 DecodeLibrary_u4.0.jar与原来依赖的架包DecodeLibrary.jar冲突了)。

总结:

依赖第三方AAR时,要将AAR内包含的资源文件、so库和jar架包与工程中的文件进行对比,将重复依赖的架包和资源删除。并检查Android Gradle插件版本,版本不一致可能会导致报错。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值