【问题标题】:Cause: buildOutput.apkData must not be null原因:buildOutput.apkData 不能为空
【发布时间】:2023-12-18 02:20:01
【问题描述】:

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

我正在使用:

  • SDK 28 (Android 9.0 (Pie))
  • Gradle 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)
        ...

【问题讨论】:

  • 我将 Android Studio 更新到 3.4 后也有同样的情况
  • 检查适合我的 Lemberg 答案,我今天遇到了这个问题
  • 安装 Android Studio 3.5 后 Java 也一样(不需要 Kotlin)。

标签: android android-studio mobile apk mobile-application


【解决方案1】:

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

【讨论】:

  • 我可以确认这与 com.android.tools.build:gradle:3.5.0-alpha05 版本(在 AS 中使用 Build -> Rebuild Project)同样适用
  • 很遗憾,它需要升级到 Android Studio 3.5,我无法告诉我的团队切换到不稳定的 Android Studio 更新频道。
  • 适用于 Android Studio 3.4
  • 在 Mac OS 上尝试 AndroidStudio3.5,所有 sdk 更新,使用 gradle 版本com.android.tools.build:gradle:3.5.0,这个解决方案不适合我
  • 试过了,是的,我收到了这个错误。 @MartinPfeffer
【解决方案2】:

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

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

之前

c:\user\folder\project\app

之后

c:\user\folder\project\apk

适用于 Android Studio 3.4 更新。

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

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

第 3 步: 重建项目(Build > Rebuild Project)

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

【讨论】:

  • 那是什么?我该怎么办? > 第 1 步:更新 Android Studio 3.4 后,您需要在应用级 build.gradle 中添加模块或库中使用的所有依赖项。
  • @babay 假设您正在使用任何使用 Glide 库的库。然后,您还必须在 App 级别的 build.gradle 中添加 Glide 依赖项。
  • @VishrutMavani 感谢您的回答,但我发现了 Android Studio 的真正愚蠢的错误。我刚刚更改了构建输出路径。那是。 Shuham Jain 的解决方案。请参阅下面他的解决方案。
  • 这解决了我在 Android Studio v3.5 和 Java 项目中的问题。每当现在构建 Android 应用程序时,这是一个非常标准的情况......(1)得到一个奇怪的难以理解的构建错误(2)谷歌它(3)堆栈溢出(4)以特定顺序应用看似不相关的解决方法(5)祈祷(6 ) 它工作 (7) 转到步骤 (1)
  • 我不敢相信这个问题的有效解决方案实际上是“更改目标文件夹”。但它是! ¯\_(ツ)_/¯
【解决方案3】:

适用于 Android Studio 3.5 | 3.6

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

buildOutput.apkData must not be null

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

假设当前目标路径是

c:\用户\文件夹\项目\应用程序

改成

c:\用户\文件夹\项目\

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

【讨论】:

  • 非常感谢您的解决方案。谢谢。这只是 Android Studio 的简单且非常愚蠢的构建错误。
  • 哇,你用这个救了我的命。然而,这是 Android Studio 中的错误还是我的项目搞砸了?
  • 天啊,这次 Android Studio 升级到 3.5 给我带来了很多问题。
  • 在 Android 3.5.2 中非常有用
  • 感谢和不错的解决方案。即使在 Android Studio 3.6 中出现此错误,我也更新了 Android Studio。这个解决方案挽救了我的一天。再次感谢
【解决方案4】:

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

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

我不知道到底发生了什么变化或原来的问题是什么,但它确实有效。我希望它也能帮助你,因为这个错误很烦人......

【讨论】:

  • 在我的情况下,我需要生成第一个产品风味 apk(调试到发布)到最后一个风味(调试到发布)。
  • 是的!它也对我有用。谢谢。我不知道为什么,但它看起来像一个错误。
  • 在 Mac OS 上尝试 AndroidStudio3.5,所有 sdk 更新,使用 gradle 版本com.android.tools.build:gradle:3.5.0,这个解决方案不适合我
  • 在我的例子中:AndroidStudio3.5, Build bundle(s)/apk(s) => Build apk(s), then Generate Signed APK
  • 这很疯狂,但这个解决方案有效 - 我不明白为什么。 Android Studio 3.5,Windows
【解决方案5】:

清理项目对我没有帮助,但手动删除所有模块中所有自动生成的 build 文件夹有帮助。

【讨论】:

  • 这相当于清理项目。
  • 不,不是,尝试从 Android Studio 中清理项目,然后在任何文件资源管理器中检查 App 目录中的 build 目录,您会看到一些文件仍然存在。跨度>
  • 在我的情况下,我有多种风格,一旦我删除了所有构建文件夹以及 Flavor 特定文件夹,它就可以工作。删除文件夹后,我不得不关闭项目并重新打开它才能正常工作
  • 在 Mac OS 上尝试 AndroidStudio3.5,所有 sdk 更新,使用 gradle 版本com.android.tools.build:gradle:3.5.0,这个解决方案不适合我
【解决方案6】:

正在更新到 Android Studio 3.4.?,我收到消息

原因:buildOutput.apkData 不能为空

寻找答案我找到了程序:

Build -> Clean Project

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

/app/build/ 

然后我重建项目并且它工作了。

【讨论】:

  • 这对我有用,但我还必须删除所有<flavor>/<buildConfig> 目录(其中大约是output.json 文件)。 Clean project 单独没有解决问题。
【解决方案7】:

我尝试了以上多种解决方案,但没有发生任何事情然后我发现了这个 this 为我工作

    deleting debug/output.json and release/output.json solved my problem

现在我可以生成apk了

【讨论】:

    【解决方案8】:

    所有的解决方案都不适合我

    Android Studio V 3.5

    Android gradle 插件 V 3.4.2

    Gradle 版本 V 5.1.1

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

    Reference

    【讨论】:

      【解决方案9】:

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

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

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

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

      【讨论】:

        【解决方案10】:

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

        【讨论】:

        • 这个“解决方案”也对我有用。降级到 AS 3.4.2,在此处下载:developer.android.com/studio/archive 并从 3.5.0 更改为:classpath 'com.android.tools.build:gradle:3.4.2'
        【解决方案11】:

        它对我有用:

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

        2. 在android studio的终端输入这个命令

        如果是windows用户

        gradlew clean build
        

        如果是linux用户

        ./gradlew clean build
        

        【讨论】:

        • 在 Mac OS 上尝试 AndroidStudio3.5,所有 sdk 更新,使用 gradle 版本com.android.tools.build:gradle:3.5.0,这个解决方案不适合我
        【解决方案12】:

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

        解决办法是

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

        请参考附件截图

        【讨论】:

        • 在 Mac OS 上尝试 AndroidStudio3.5,所有 sdk 更新,使用 gradle 版本com.android.tools.build:gradle:3.5.0,这个解决方案不适合我
        • 你能试试 File > Invalidate caches/Restart after delete auto-generated files .gradle and build @MihodiHasanLushan
        【解决方案13】:

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

        前:

        /home/sanaebadi/Desktop
        

        更改后:

        /home/sanaebadi/apk
        

        【讨论】:

          【解决方案14】:

          我的解决方案是从 apk 输出文件夹中删除所有文件和文件夹。 我在为“生产”风格创建签名 apk 时遇到了这个问题,而“功能”输出文件夹中的 output.json 导致了问题 -> Android Studio 3.6 Canary 7 向我显示了正确的错误消息。 它现在也适用于带有 Gradle Plugin 3.5.0 的 AS 3.5 稳定版。

          【讨论】:

            【解决方案15】:

            所有解决方案都不适用于我
            在我的情况下,从 AndroidStudio 3.4+ 更新到 3.5。
            最后我通过将“目标文件夹”修改为“app/build/outputs/apk”来解决它
            detail pic

            【讨论】:

              【解决方案16】:

              唯一适合我的解决方案是在我的根 gradle 中使用

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

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

              PS:我正在使用 android studio 3.5 顺便说一句

              更新:

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

              【讨论】:

                【解决方案17】:

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

                【讨论】:

                  【解决方案18】:

                  通常在将 android Studio V3.4 更新到 V3.5 时会出现此问题。 尝试删除debug/output.jsonrelease/output.json文件。

                  然后尝试以下步骤:

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

                  第 2 步: 重建项目(Build > Rebuild Project)

                  【讨论】:

                    【解决方案19】:

                    我有 android studio 3.5.1 。对我来说,以下步骤有效

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

                    【讨论】:

                      【解决方案20】:

                      解决方案:-

                      1- Build -> Clean Project 没有帮助

                      2-Build -> Make Project 没有帮助

                      3- 重启 android studio 没有帮助

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

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

                      【讨论】:

                        【解决方案21】:

                        在我的例子中,使用不同的构建配置构建和启动项目是成功的。但是生成已签名的 apk 会引发错误 Cause: buildOutput.apkData must not be null 另一方面,生成了 apk 并且生成输出切换视图打印 BUILD SUCCESSFUL。手动安装以消息App not installed 结束。我的错是使用compileSdkVersion 'android-P' 并在更改为compileSdkVersion 28 后一切顺利。

                        【讨论】:

                          【解决方案22】:

                          我尝试了所有解决方案,但都没有帮助!经过多次尝试,我终于弄明白了,只需按照提示进行操作即可:

                          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。最后这个命令:

                          mac:./gradlew clean assemble_YOUR_FAVOR_Release

                          赢:gradlew clean assemble_YOUR_FAVOR_Release

                          其中_YOUR_FAVOR_ 是您的可选优惠,如果您不使用任何优惠,只需使用assembleRelease 而不是assemble_YOUR_FAVOR_Release

                          【讨论】:

                            【解决方案23】:

                            将我的 Android Studio v3.4 更新到 v3.5 后会出现此问题 现在,它工作正常

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

                            Android Studio 3.5 编译dkVersion 28

                            apk 生成工作

                            【讨论】:

                              【解决方案24】:

                              我也对同样的错误感到恼火。但是将我的 Signed apk destinationc/users/project/app 更改为 c/users/project 对我有用。

                              【讨论】:

                                【解决方案25】:

                                1- 删除所有生成的 app bundle (.aab) 和所有变体的 APK。

                                2- 删除构建文件夹

                                3- 清理项目

                                【讨论】:

                                  【解决方案26】:

                                  调试生成签名的APK, 然后你就可以为release生成签名的APK了。

                                  【讨论】:

                                  【解决方案27】:

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

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

                                  【讨论】:

                                    【解决方案28】:

                                    AS 4.0.1(通过 snap 安装)

                                    Ubuntu 18.04 lts

                                    通过构建变体配置构建。

                                    无效缓存/构建/清理等组合本身并没有帮助,唯一有帮助的是将构建活动的构建变体切换回armDebug,然后清理/重建。

                                    一旦我切换回所需的变体,我就可以正确构建。

                                    【讨论】:

                                      【解决方案29】:

                                      enter code here如果您使用不同的构建变体,请选择特定文件夹以生成登录 apk 文件。当您尝试生成登录 apk 流时,您可以更改路径。对我来说,这很有效。

                                      【讨论】: