【问题标题】:Building with Gradle Throws MalformedJsonException使用 Gradle 构建会引发 MalformedJsonException
【发布时间】:2015-10-22 15:32:13
【问题描述】:

每当我尝试使用 Gradle 构建项目时,都会收到此错误

:app:mergeDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> Error: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1

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

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResources'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
    at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:42)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:310)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.executeTask(AbstractTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:63)
    at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:51)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: com.android.build.gradle.tasks.ResourceException: Error: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:164)
    at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:104)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.doExecute(AnnotationProcessingTaskFactory.java:243)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:219)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$IncrementalTaskAction.execute(AnnotationProcessingTaskFactory.java:230)
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:208)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
    ... 14 more
Caused by: Error: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.android.ide.common.res2.MergeWriter.end(MergeWriter.java:54)
    at com.android.ide.common.res2.MergedResourceWriter.end(MergedResourceWriter.java:129)
    at com.android.ide.common.res2.DataMerger.mergeData(DataMerger.java:291)
    at com.android.ide.common.res2.ResourceMerger.mergeData(ResourceMerger.java:48)
    at com.android.build.gradle.tasks.MergeResources.doFullTaskAction(MergeResources.java:157)
    ... 22 more
Caused by: java.lang.RuntimeException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:117)
    at com.android.ide.common.res2.MergeWriter.end(MergeWriter.java:50)
    ... 26 more
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
    at com.android.ide.common.blame.MergingLog.getWholeFileMap(MergingLog.java:128)
    at com.android.ide.common.blame.MergingLog.logCopy(MergingLog.java:88)
    at com.android.ide.common.blame.MergingLog.logCopy(MergingLog.java:98)
    at com.android.ide.common.res2.MergedResourceWriter$1.call(MergedResourceWriter.java:215)
    at com.android.ide.common.res2.MergedResourceWriter$1.call(MergedResourceWriter.java:171)
Caused by: java.lang.RuntimeException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.android.ide.common.blame.MergingLogPersistUtil.loadFromSingleFile(MergingLogPersistUtil.java:293)
    at com.android.ide.common.blame.MergingLog$1.load(MergingLog.java:55)
    at com.android.ide.common.blame.MergingLog$1.load(MergingLog.java:52)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
    ... 8 more
Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
    at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:572)
    at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:332)
    at com.android.ide.common.blame.MergingLogPersistUtil.loadFromSingleFile(MergingLogPersistUtil.java:266)
    ... 14 more


BUILD FAILED

我已经在这个项目上工作了将近一年,这是我第一次看到使用 Gradle 构建这个问题。 Google 也不会返回任何有用的结果。

我的电脑硬盘停止响应,所以我不得不在 Android Studio 打开时强制关机,这可能与问题有关。

采取的步骤:

  • 重启 Android Studio

  • 使缓存无效并重新启动

  • 删除我的主目录中的 .gradle 文件夹

这很烦人,我似乎找不到解决办法。感谢您的帮助!

【问题讨论】:

  • 对我来说,问题与某种AndroidSDK/analytics.settings 文件有关,但在命令行中使用gradle assembleDebug 进行了第二次尝试。

标签: android android-studio gradle


【解决方案1】:

您是否尝试过清理项目并重新运行?

【讨论】:

    【解决方案2】:

    这应该可行:

    1. 从工作区中删除 .gradle 文件夹。
    2. 重启 Android Studio。
    3. 构建 -> 清理项目。

    【讨论】:

    • 不工作甚至应用程序编译我在编译时获取应用程序
    • 当我删除 .gradle 文件夹时构建成功。谢谢这个提示。
    【解决方案3】:

    您只需点击构建 -> 重建。就是这样。

    【讨论】:

      【解决方案4】:

      构建 -> 清理项目。而不是建造 -> 重建项目

      【讨论】:

        【解决方案5】:

        不是真正的解决方案,但我将构建变体从 debug 切换到 release,它能够正确完成构建。

        因此,如果debug 不是优先级,那么切换构建变体无论如何都可以帮助您构建。

        【讨论】:

          【解决方案6】:

          我最终通过删除项目目录并从 Github 的旧版本重新导入项目来修复它。这不是一个很好的解决方案,但它是唯一有效的解决方案。我有幸在 Github 上备份了我的代码

          【讨论】:

            【解决方案7】:

            另一种可能的解决方案是再次将项目导入 Android Studio,方法是将源代码检出到干净的位置,或者仅删除项目根目录下的 .idea 目录,然后重新导入。

            当然,先备份。

            另外,另一个想法可以是首先重新启动计算机。如果是 Windows,在某些情况下,我会看到一些文件被锁定,从而导致奇怪的行为。

            【讨论】:

            • 尝试重新导入并重新启动我的电脑,都不起作用:(
            【解决方案8】:

            对于 Firebase android 项目,

            如果您在移动应用中使用 Firebase。

            下载google-services.json 文件并将其放入/app 文件夹并再次运行该项目。

            【讨论】:

            • 不工作甚至应用程序编译我在编译时获取应用程序
            【解决方案9】:

            对于 Cordova 项目,首先保存(或获取,如果您还没有)google-services.json 文件,以及您可能对 Android 平台文件夹进行的其他配置,然后运行:

            cordova platform remove android
            

            之后,再次相加:

            cordova platform add android
            

            将您的google-services.json文件保存在platforms/android/app文件夹中,然后尝试构建APK。它对我有用,用于修复错误:

            Execution failed for task ':app:processDebugGoogleServices'.
            > Malformed root json
            

            【讨论】:

              【解决方案10】:

              构建 => 清理项目 等到同步 构建 => 重建项目 重启安卓工作室

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2017-08-28
                • 2012-06-14
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多