原因:buildOutput.apkData不能为null

时间:2019-02-03 13:24:22

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

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

我正在使用:

  • SDK 28(Android 9.0(Pie))
  • 5.1.1级
  • Gradle插件3.5.0-alpha03
  • 科特林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)
        ...

29 个答案:

答案 0 :(得分:130)

点击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 :(得分:89)

对于Android Studio 3.5

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

buildOutput.apkData must not be null

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

假设当前目标路径为

  

c:\ user \ folder \ project \ app

将其更改为

  

c:\ user \ folder \ project \

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

答案 2 :(得分:12)

我的情况下,此问题是由于Android Studio 3.4更新引起的。

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

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

步骤3:重建项目(“生成”>“重建项目”

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

答案 3 :(得分:9)

清理项目并没有帮助我,但是手动删除所有模块中所有自动生成的 build 文件夹很有帮助。 enter image description here

答案 4 :(得分:7)

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

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

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

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

答案 5 :(得分:6)

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

Android Studio V 3.5

Android gradle插件V 3.4.2

版本V 5.1.1

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

Reference

答案 6 :(得分:6)

我尝试了多种解决方案,但什么都没发生,然后我发现了 this为我工作

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

现在我可以生成apk

答案 7 :(得分:4)

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

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

我不知道发生了什么变化或最初的问题是什么,但是它可以解决问题。我希望它也会对您有帮助,因为此错误非常令人讨厌...

答案 8 :(得分:3)

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

解决方案是

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

请附加参考屏幕截图

please ref screen shot attached

答案 9 :(得分:3)

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

EX:

/home/sanaebadi/Desktop

更改后:

/home/sanaebadi/apk

答案 10 :(得分:3)

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

答案 11 :(得分:2)

它对我有用:

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

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

如果Windows用户

git checkout B
git branch --set-upstream-to A
# shorthand: git branch -u A

如果是Linux用户

gradlew clean build

答案 12 :(得分:2)

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

然后尝试以下步骤:

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

步骤2:重建项目(“生成”>“重建项目”

答案 13 :(得分:2)

解决方案:-

1- Build -> Clean Project没有帮助

2-{{​​1}}没有帮助

3-重新启动android studio没有帮助

4-从Build -> Make Project手动删除Build文件夹,而app没有帮助

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

答案 14 :(得分:2)

更新到Android Studio 3.4.1 ,我收到消息

  

原因:buildOutput.apkData不能为空

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

Build-> Clean Project

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

/app/build/ 

然后我重建了项目,它就起作用了。

答案 15 :(得分:2)

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

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

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

PS:我正在使用android studio 3.5 btw

更新:

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

答案 16 :(得分:1)

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

答案 17 :(得分:1)

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

答案 18 :(得分: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。最后这个命令:

mac:./gradlew clean assemble_YOUR_FAVOR_Release

赢:gradlew clean assemble_YOUR_FAVOR_Release

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

答案 19 :(得分:1)

我也被同一错误所困扰。但是将我的 Signed apk目的地 c / users / project / app 更改为 c / users / project 对我来说是有效的。

答案 20 :(得分:1)

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

2-删除构建文件夹

3-清洁项目

答案 21 :(得分:1)

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

答案 22 :(得分:0)

AS 4.0.1(通过快照安装)

Ubuntu 18.04 lts

通过构建变体配置构建。

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

enter image description here

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

答案 23 :(得分:0)

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

假设当前的目标路径为

c:\ user \ folder \ project \ app

将其更改为

c:\ user \ folder \ project

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

答案 24 :(得分:0)

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

答案 25 :(得分:0)

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

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

答案 26 :(得分:0)

生成已签名的APK,以进行调试, 然后您可以为发布生成签名的APK。

答案 27 :(得分:0)

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

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

Android Studio 3.5 compilesdkVersion 28

apk生成工作

答案 28 :(得分:0)

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

  

文件->带有gradle文件的同步项目。