原因:buildOutput.apkData不能为null

问题描述 投票:84回答:7

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

我在用:

  • SDK 28(Android 9.0(Pie))
  • Gradle 5.1.1
  • Gradle Plugin 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)
        ...
android android-studio mobile apk mobile-application
7个回答
156
投票

点击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'

21
投票

在我的情况下由于Android Studio 3.4更新,会出现此问题。

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

第2步:清洁项目(构建>清洁项目)

第3步:重建项目(构建>重建项目)

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


10
投票

清理项目对我没有帮助,但手动删除所有模块中的所有自动生成的构建文件夹都有帮助。 enter image description here


4
投票

当我尝试为我的发布版本“生成签名APK”时,我也遇到了这个错误。我尝试了所有上述方法,遗憾的是没有一个对我有效。

有用的是,首先生成应用程序的调试签名版本,然后再生成第一个版本。

我不知道究竟发生了什么变化或原始问题是什么,但它确实奏效了。我希望它也会对你有所帮助,因为这个错误非常烦人......


2
投票

这个对我有用:

  1. 手动从项目中删除构建文件夹。
  2. 在android studio的终端输入这个命令

如果是windows用户

gradlew clean build

如果linux用户

./gradlew clean build

1
投票

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


1
投票

更新到Android Studio 3.4.1我收到消息

原因:buildOutput.apkData不能为null

寻找答案我找到了程序:

Build - > Clean Project

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

/app/build/ 

然后我重建项目,它的工作。


0
投票

在我的情况下,使用不同构建配置的构建和启动项目是成功的。但生成签名的apk抛出错误Cause: buildOutput.apkData must not be null另一方面apk生成和构建输出切换视图打印BUILD SUCCESSFUL。手动安装以消息App not installed结束。我的错是使用compileSdkVersion 'android-P',在换到compileSdkVersion 28后一切顺利。

© www.soinside.com 2019 - 2024. All rights reserved.