我正在关注"The Big Nerd Ranch's Android Programming Guide"一书(第2版),在特定章节(第21章)中,他们要求您对某些图像资产使用9个补丁的图像。在那之前,我编写的应用程序,称为BeatBox,运行良好,编译没有错误。
但是,当我继续用 9 个补丁的图像替换一些可绘制对象时,我遇到了构建错误,我只是无法构建应用程序。以下是我得到的错误:
Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources]
Configuration on demand is an incubating feature.
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE
:app:prepareComAndroidSupportRecyclerviewV72311Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:Users<USERNAME>AppDataLocalAndroidsdkbuild-tools23.0.2aapt.exe'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 12.753 secs
我遵循了书中提供的确切说明,因此我认为结果应该是没有错误的。知道为什么我遇到此错误吗?
首先为你提升一点理智
AAPT与将资源捆绑到APK中完全相关。这里有一些很好的细节,包括(IMO)显示不同构建步骤的最佳图表。因此,您的aapt问题aapt.exe'' finished with non-zero exit value 1
几乎可以肯定是由您更改9个补丁引起的。没有必要回到原点,试图记住你可能还改变了什么,最终把所有的头发都拔掉了。
验证
我无法通过直接运行任一根 Gradle 任务(:app:generateDebugSources
和 :app:generateDebugAndroidTestSources
)来复制您的问题。我也无法通过仅运行失败的 Gradle 任务来复制问题::app:processDebugResources
.
不是由按需配置引起的
问题不太可能是由"按需配置"中的故障引起的。如果生成成功,还将打印"按需配置是一项孵化功能"行。
思潮
看起来您使用的是最新的构建工具(撰写本文时为 23.0.2)版本,这很好。
你没有列出它,但我猜你也在使用最新版本的Android-Gradle插件(因为它们都是同时出现的,Android Studio默认使用最新版本)。
更多信息我的建议是返回并从我们要求您实现的第一个 Drawable 开始:ShapeDrawable
并确认它有效,然后继续下一个。这将有助于查明问题所在。
如果您可以提供指向示例的链接,那也会有所帮助。
将来遇到与 Gradle 相关的问题,您可以随时自己运行 Gradle 任务(如我上面所做的那样)并添加 --info
标志。从命令行或Android Studio中的"终端"只需运行(在您的情况下):
./gradlew app:generateDebugSources --info
最后,无论您发现什么,请在此处发布。你看到的问题与我们的书没有直接关系,你的回答会帮助别人。
我遇到了同样的问题,我用以下方法解决了它:
./gradlew clean