前言:最近在打包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
}
}
打包运行问题解决
注:出现此类问题原因各不相同,希望上述方法能提供一些参考,有其他方法欢迎留言分享!