解决AS3.1.4的com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details

前言:最近在打包apk的时出现com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details问题,查阅资料解释是非AsciⅡ的确是AAPT2和Gradle插件的一个bug,但现在已经被修复,需要升级Android Studio;但是不同的需求对应的BuildGradle配置有所差异。

针对上面的问题总结一些解决方法:

查阅资料得到的方法有以下几种:
1.gradle-wrapper.properties文件配置:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip

build.gradle文件配置:

    dependencies {
        classpath  'com.android.tools.build:gradle:3.2.0'
    }

同时app下的build.gradle文件:
buildToolsVersion ‘28.0.2’(28以上) minSdkVersion 23(19以上)
注:相应的gradle都要做对应改变

2.查找问题的具体描述确定问题位置

打包是会出现类似如下的提示信息

Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
	at com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:327)
	... 50 more
Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
	at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
	at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
	at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
	at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$compile$0(QueueableAapt2.java:136)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	... 1 more
Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
	at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:443)
	at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:395)
	at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:312)
	at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

但是这些提示往往对我们来说不是很直观没能准确地定位当前问题,此时可以通过assembleDebug打印详细的错误描述:

1、可以通过Terminal窗口,使用命令:gradlew assembleDebug -s

2、可以通过点击AS右侧栏目gradle–>app–>Tasks—>build—> assembleDebug
此时我们可以看到我们熟悉的身影:

* What went wrong:
A problem occurred configuring project ':IDCardLib'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.BuildArtifactReportTask.

基本上可以定位到问题了,当然不同的应用出现的具体问题也各不相同,找到问题才能更好地解决问题
3.针对第二个方法中出现的问题解决方法:
上述问题是因为项目中引用了一些三方sdk中的点9.png图,网上也有资料说明加入如下方法可以处理:

//android studio2.0遇到的问题 .9.png制作
android {
 aaptOptions.cruncherEnabled = false
 aaptOptions.useNewCruncher = false
}   

正兴奋地以为解决问题的时候发现又出现了一下提示信息:

Lint found fatal errors while assembling a release target. 
 To proceed, either fix the issues identified by lint, or modify your build script as follows:  ...
  android {     
lintOptions {       
   checkReleaseBuilds false         
 // Or, if you prefer, you can continue to check for errors in release builds,       
  // but continue the build even when errors are found:         
 abortOnError false      }
  }

果断的把代码copy过去,代码如下:

android {
   aaptOptions.cruncherEnabled = false
    aaptOptions.useNewCruncher = false
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
       }

打包运行问题解决
注:出现此类问题原因各不相同,希望上述方法能提供一些参考,有其他方法欢迎留言分享!

你可能感兴趣的:(Android)