原因:buildOutput.apkData不能为null


244

当我尝试在手机的模拟器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)
        ...


3
我将Android Studio更新为3.4后,我也遇到了同样的情况
Andrew

2
查看林伯格对我有用的答案,我今天已经遇到这个问题
Nicky

安装Android Studio 3.5后,对于Java相同(不需要Kotlin)。
Patapoom

Answers:


311

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

1
我可以确认它也与版本com.android.tools.build:gradle:3.5.0-alpha05(在AS中带有Build-> Rebuild Project)一起正常工作
kikoso

1
可悲的是,它需要升级到Android Studio 3.5,我不能告诉我的团队切换到用于Android Studio更新的不稳定通道。
void.pointer '19

8
可在Android Studio 3.4上使用
拉斐尔

6
尝试在Mac OS上的AndroidStudio3.5上,更新所有sdk,使用gradle版本com.android.tools.build:gradle:3.5.0,此解决方案不适用于我
Mihodi Lushan

1
尝试过那些,是的,我收到此错误。@MartinPfeffer
Mihodi Lushan

149

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

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

之前

c:\user\folder\project\app

c:\user\folder\project\apk


对于Android Studio 3.4更新。

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

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

第三步:重建项目(“构建”>“重建项目”)

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


1
那是什么?我应该怎么做?>步骤1:更新Android Studio 3.4之后,您需要在应用程序级build.gradle中添加模块或库中使用的所有依赖项。
babay

1
@babay假设您正在使用使用Glide库的任何库。然后,您还必须在应用程序级别build.gradle中添加Glide依赖项。
Vishrut Mavani

1
@VishrutMavani感谢您的回答,但我发现了Android Studio的真正愚蠢错误。我只是更改了构建输出路径。那是。Shuham Jain解决方案。见下文他的解决方案。
james

5
这解决了我在Android Studio v3.5和Java项目中的问题。每当现在构建Android应用程序时,这都是相当标准的事情...(1)出现奇怪的无法理解的构建错误(2)google it(3)堆栈溢出(4)按特定顺序应用看似无关的解决方法(5)祈祷(6 ),它起作用(7)转到步骤(1)
dodgy_coder

2
我无法相信解决此问题的有效方法实际上是“更改目标文件夹”。但它是!¯__(ツ)_ /
¯– mkasberg

138

对于Android Studio 3.5 | 3.6

调试构建完成,没有任何错误。在创建签名的.apk时会导致相同的错误

buildOutput.apkData must not be null

我发现的简单解决方案是。在导航到下一个屏幕时,在输入签名凭据后的apk签名过程中,它将询问目标文件夹,只需更改默认路径即可。

假设当前目标路径为

c:\ user \ folder \ project \ app

更改为

c:\ user \ folder \ project \

然后它将成功生成签名的apk。

Android studio destination folder screenshot


5
非常感谢您的解决方案。谢谢。这很简单,而且确实是Android Studio的愚蠢构建错误。
james

2
哇,您救了我一命。但是,这是Android Studio中的错误还是我的项目搞砸了?
Vijay Kumar Kanta

1
天哪,此Android Studio升级至3.5给我带来了很多问题。
亨里克·蒙特

1
在Android 3.5.2中非常有用
CodeFluid

1
谢谢和尼斯的解决方案。即使在Android Studio 3.6中发生此错误,我也更新了Android Studio。这个解决方案挽救了我的一天。再次感谢
Divakar Murugesh

49

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

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

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


1
就我而言,我需要生成第一个产品风味apk(要发布的调试)到最后一个风味(要发布的调试)。
水果

3
是!!它也对我有用。谢谢。我不知道为什么,但是看起来像个错误。
Doongsil,

3
尝试在Mac OS上的AndroidStudio3.5上,更新所有sdk,使用gradle版本com.android.tools.build:gradle:3.5.0,此解决方案不适用于我
Mihodi Lushan

1
在我的情况下:AndroidStudio3.5,构建捆绑/ apk =>构建apk,然后生成签名的APK
独奏

1
太疯狂了,但是这种解决方案有效-我不明白为什么。Android Studio 3.5,Windows
cVoronin

22

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


这相当于清理项目。
devgianlu '19

4
不,不是,请尝试从Android Studio清除项目,然后build在任何文件浏览器中的App目录中检查目录,您将看到一些文件仍然保留在其中。
罗曼·纳扎列维奇

就我而言,我有多种风味,一旦我删除了所有build文件夹以及Flavor特定的文件夹,它就会起作用。删除文件夹后,我不得不关闭该项目,并重新得到它的工作
哈日

尝试在Mac OS上的AndroidStudio3.5上,更新所有sdk,使用gradle版本com.android.tools.build:gradle:3.5.0,此解决方案不适用于我
Mihodi Lushan

18

正在更新至Android Studio 3.4。,我收到消息

原因:buildOutput.apkData不能为null

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

Build -> Clean Project

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

/app/build/ 

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


2
这对我有用,但是我还必须删除所有<flavor>/<buildConfig>目录(关于其中的output.json文件)。Clean project一个人并不能解决问题。
javaxian


9

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

Android Studio V 3.5

Android Gradle插件V 3.4.2

Gradle版本5.1.1

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

参考


7

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

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

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

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


5

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


这个“解决方案”也对我有用。降级为AS 3.4.2,请
此处

4

这个对我有用:

  1. 从您的项目中手动删除构建文件夹。

  2. 在android studio的终端中键入以下命令

如果Windows用户

gradlew clean build

如果是Linux用户

./gradlew clean build

1
尝试在Mac OS上的AndroidStudio3.5上,更新所有sdk,使用gradle版本com.android.tools.build:gradle:3.5.0,此解决方案不适用于我
Mihodi Lushan

4

通常,当您使用不同的项目运行多个android studio窗口时,通常会发生此问题。

解决方法是

  • 选择项目而不是删除.gradle并构建文件夹
  • 而不是清理和重建项目。

请参考所附的屏幕截图

请参考所附的屏幕截图


尝试在Mac OS上的AndroidStudio3.5上,更新所有sdk,使用gradle版本com.android.tools.build:gradle:3.5.0,此解决方案不适用于我
Mihodi Lushan

您能否在删除自动生成的文件.gradle并构建@MihodiHasanLushan
Suresh Maidaragi

4

只需更改Apk发行/调试位置

例如:

/home/sanaebadi/Desktop

更改后:

/home/sanaebadi/apk

3

对我来说,解决方案是从apk输出文件夹中删除所有文件和文件夹。为“生产”样式创建签名的apk时出现此问题,并且output.json在“功能”输出文件夹中导致问题-> Android Studio 3.6 Canary 7向我显示了正确的错误消息。现在也可以通过Gradle Plugin 3.5.0在AS 3.5稳定版中使用。


3


对于我而言,所有解决方案均无法使用,我的情况是从AndroidStudio 3.4+更新到3.5。
最后,我通过修改“目标文件夹”到“应用程序/生成/输出/ APK”解决这个问题
的细节PIC


2

唯一适用于我的解决方案是在我的root gradle中使用

classpath 'com.android.tools.build:gradle:3.3.0'

我尝试过的操作:-手动清除所有构建文件夹-使缓存无效,但这些都不起作用

PS:我正在使用android studio 3.5 btw

更新:

就像@Vishrut Mavani一样,更改发行版本的目标文件夹也是可行的


2

通常,此问题发生在将Android Studio V3.4更新到V3.5时。尝试删除debug/output.jsonrelease/output.json文件。

然后尝试以下步骤:

第1步:清理项目(构建>清理项目)

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


2

我有android studio 3.5.1。对我来说,下面的步骤是有效的

  1. 文件->使缓存无效/重新启动
  2. 在android studio重新启动后,点击Build-> Clean project
  3. 然后构建->重建项目

1

就我而言,具有不同构建配置的构建和启动项目是成功的。但是Cause: buildOutput.apkData must not be null另一方面,生成带符号的apk引发错误apk,并且生成输出切换视图打印BUILD SUCCESSFUL。手动安装以消息结尾App not installed。我的错是使用compileSdkVersion 'android-P',更改后compileSdkVersion 28一切正常。


1

我已经尝试了所有解决方案,但没有一个可以帮到您!经过多次尝试,我终于明白了,只要遵循提示即可:

  1. 复制(用于释放的)签名按键 yourProject/app/
  2. gradle.properties(修改与您自己的密钥相关的值):
    MYAPP_RELEASE_STORE_FILE=KEYSTROK_NAME
    MYAPP_RELEASE_KEY_ALIAS=KEY_ALIAS
    MYAPP_RELEASE_STORE_PASSWORD=R_PASS
    MYAPP_RELEASE_KEY_PASSWORD=K_PASS
    android.enableR8=true
  3. 应用程序级别build.gradle(在android内部):

    signingConfigs{
        release{
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    
    configurations {
        cleanedAnnotations
        compile.exclude group: 'org.jetbrains' , module:'annotations'
    }
    
  4. 应用程序级别build.gradle(在buildTypes内部):
    release {
        manifestPlaceholders = [analytics_deactivated: "false"]
        minifyEnabled true
        signingConfig signingConfigs.release
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    5.最后这个命令:

苹果电脑: ./gradlew clean assemble_YOUR_FAVOR_Release

赢得: gradlew clean assemble_YOUR_FAVOR_Release

_YOUR_FAVOR_您的可选帮助在哪里,如果您不使用任何帮助,只需使用assembleRelease代替assemble_YOUR_FAVOR_Release


1

将我的Android Studio v3.4更新到v3.5之后,就会发生此问题,现在一切正常

我通过删除debug / output.json和release / output.json文件解决了此问题

Android Studio 3.5 compilesdkVersion 28

apk生成工作



1

1-删除所有变体的所有生成的应用程序捆绑包(.aab)和APK。

2-删除构建文件夹

3-清洁项目


1

手动删除所有现有的构建变体文件夹以及对我有用的项目文件夹中的构建文件夹。



0

解决方案 :-

1- Build -> Clean Project没有帮助

2- Build -> Make Project没有帮助

3-重新启动Android Studio没有帮助

4-手动删除build文件夹从appproject没有帮助

我唯一的解决方案是从目标文件夹中删除所有旧版本


-1

似乎清理项目可能会解决问题,但对我来说,它的工作原理是这样的。

文件->同步项目与gradle文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.