原因:buildOutput.apkData不能为null

jze*_*lar 192 mobile android mobile-application apk android-studio

当我尝试在手机的模拟器o中运行“ app”时,使用Kotlin的android应用程序抛出此异常。当我构建项目时,它运行良好,没有错误。

我在用:

  • SDK 28(Android 9.0(Pie))
  • 摇篮5.1.1
  • Gradle插件3.5.0-alpha03
  • Kotlin 1.3.10
  • Java 1.8.0_151
  • OSX 10.13.2
    org.gradle.internal.exceptions.LocationAwareException: buildOutput.apkData must not be null
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99)
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:65)
        at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:39)
        at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:29)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:194)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:141)
        ...
    Caused by: java.lang.IllegalStateException: buildOutput.apkData must not be null
        at com.android.build.gradle.internal.ide.EarlySyncBuildOutput$Companion$load$2.invoke(EarlySyncBuildOutput.kt:103)
        at com.android.build.gradle.internal.ide.EarlySyncBuildOutput$Companion$load$2.invoke(EarlySyncBuildOutput.kt:67)
        at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:174)
        at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:691)
        at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:721)
        at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:712)
        ...
Run Code Online (Sandbox Code Playgroud)

Mar*_*fer 262

点击Build->Clean Project

然后Build->Make Project

在gradle 3.5.0-alpha3,-alpha5和3.4.0上进行了测试(项目gradle)

classpath 'com.android.tools.build:gradle:3.5.0-alpha03'
Run Code Online (Sandbox Code Playgroud)

  • 适用于Android Studio 3.4 (7认同)
  • 尝试在Mac OS上的AndroidStudio3.5上,使用gradle版本`com.android.tools.build:gradle:3.5.0`更新所有SDK,此解决方案不适用于我 (5认同)

Vis*_*ani 115

适用于Android Studio 3.5更新。(APK签名问题)

步骤1:我已经通过修改目标文件夹位置解决了此问题。

之前

c:\user\folder\project\app
Run Code Online (Sandbox Code Playgroud)

c:\user\folder\project\apk
Run Code Online (Sandbox Code Playgroud)


适用于Android Studio 3.4更新。

步骤1:更新Android Studio 3.4之后,您需要在应用程序级别中添加模块或库中使用的所有依赖项build.gradle

步骤2:清理项目(“构建”>“清理项目”)

步骤3:重建项目(“构建”>“重建项目”)

现在,您的项目将完美编译。

  • 这解决了我在Android Studio v3.5和Java项目中的问题。每当现在构建Android应用程序时,这都是相当标准的事情...(1)出现奇怪的,不可理解的构建错误(2)google it(3)堆栈溢出(4)按特定顺序应用看似无关的解决方法(5)祈祷(6 )它起作用(7)转到步骤(1) (4认同)
  • 我不敢相信这个问题的有效解决方案实际上是“更改目标文件夹”。但它是!˙\\_(ツ)_/˙ (3认同)
  • 第一点对我有用,因为我正在使用3.5 (2认同)

Shu*_*ain 84

FOR Android Studio 3.5

debug builds finish without any error. During the creating a signed .apk leads to the same error

buildOutput.apkData must not be null
Run Code Online (Sandbox Code Playgroud)

the Simple solution that I found is. During the signing the apk after entering the signing credentials when you navigate to the next screen then it will ask for the destination folder just change the default path.

Let's assume current destination path is

c:\user\folder\project\app

change it to

c:\user\folder\project\

then it will generate the signed apk successfully.

  • 我非常感谢您的解决方案。谢谢。这很简单,而且确实是Android Studio的愚蠢构建错误。 (4认同)
  • 谢谢,在Windows 10,Android Studio 3.5上工作 (3认同)
  • 哇,您救了我一命。但是,这是Android Studio中的错误还是我的项目搞砸了? (2认同)

Kur*_*chy 44

尝试为我的发行版“生成签名的APK”时,我也收到此错误。我尝试了上述所有方法,但不幸的是,没有一种方法对我有用。

有效的方法是,首先生成应用程序的调试签名版本,然后再次生成发行版。

我不知道发生了什么确切变化或最初的问题是什么,但它确实起作用。我希望它也会对您有帮助,因为此错误非常烦人...

  • 是的!!它也对我有用。谢谢。我不知道为什么,但它看起来像一个错误。 (4认同)
  • 尝试在Mac OS上的AndroidStudio3.5上,使用gradle版本`com.android.tools.build:gradle:3.5.0`更新所有SDK,此解决方案不适用于我 (3认同)

Rom*_*ych 20

清理项目对我没有帮助,但是手动删除所有模块中的所有自动生成的构建文件夹很有帮助。 在此处输入图片说明

  • 不,不是,尝试从Android Studio清除项目,然后在任何文件浏览器中的App目录中检查build目录,您会发现有些文件仍然保留在那里。 (4认同)

Jor*_*sys 18

更新到Android Studio 3.4。?,我收到消息

原因:buildOutput.apkData不能为null

寻找答案,我找到了程序:

Build -> Clean Project

但是它不起作用,我知道此过程会将内容删除到/build目录中,但是以我的经验,它在所有情况下都不起作用,所以我尝试了“原始”方式,删除了目录:

/app/build/ 
Run Code Online (Sandbox Code Playgroud)

然后,我重建该项目,它奏效了。

  • 这对我有用,但是我还必须删除所有的<flavor> / <buildConfig>目录(这是关于其中的output.json文件)。仅“清理项目”并不能解决问题。 (2认同)

小智 7

我已经尝试了很多方法来解决该问题,但是没有任何帮助。尝试生成签名的APK时出现此错误。

降级到旧版本的Android Studio有助于(3.4.2),但是这不是解决方案。

AS中的“清理项目”功能不会清理生成的apk的创建位置,并且可能有一个文件阻止了整个过程:output.json

尝试从... / app / projectname / release / output.json中删除output.json


小智 6

所有解决方案都不适用于我

Android Studio V 3.5

Android Gradle插件V 3.4.2

Gradle版本5.1.1

  1. 清理项目
  2. 重新启动Android Studio +使缓存无效
  3. 删除构建,调试和发布文件夹
  4. 制作项目
  5. 生成签名的APK

参考


Roh*_*war 6

我尝试了多种解决方案,但没有任何反应,然后发现了 这个并为我工作

    deleting debug/output.json and release/output.json solved my problem
Run Code Online (Sandbox Code Playgroud)

现在我可以生成apk


amp*_*amp 5

我使用的是Android Studio 3.5 beta 2,并且遇到的错误完全相同,但仅限于发布版本。在尝试了所有其他解决方案后,唯一能够再次编译的方法就是回到Android Studio 3.4。