原因:buildOutput。apkData不能为空

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

我正在使用:

  • SDK 28 (Android 9.0 (Pie))
  • Gradle 5.1.1
  • Gradle Plugin 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)
...
79550 次浏览

单击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'
清理项目没有帮助我,但手动删除所有模块中自动生成的构建文件夹有帮助。 enter image description here < / p >

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

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

我不知道到底发生了什么变化,也不知道原来的问题是什么,但它起作用了。我希望它也能帮助你,因为这个错误是相当烦人的…

Android Studio 3.5 &3.6更新(APK签名issue)

我已经通过修改目标文件夹位置解决了这个问题。

之前

c:\user\folder\project\app

c:\user\folder\project\apk

enter image description here

Android Studio 3.4更新。

在更新Android Studio 3.4之后,你需要在你的应用级build.gradle中添加你的模块或库中使用的所有依赖项。

步骤2:清洁项目(建造>清洁项目)

步骤3:重建项目(Build >重建项目)

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

这对我来说很管用:

  1. 手动从项目中删除生成文件夹。

  2. 在android studio终端输入此命令

如果Windows用户

gradlew clean build

Linux用户

./gradlew clean build

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

更新到Android Studio 3.4 ?,我得到的信息

原因:buildOutput。apkData不能为空

为了寻找答案,我找到了这个程序:

__abc0 -> __abc1

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

/app/build/

然后我重新构建了这个项目,它工作了。

在我的案例中,使用不同的构建配置构建和启动项目是成功的。但是生成带符号的apk会抛出错误Cause: buildOutput.apkData must not be null,另一方面apk会被生成,构建输出切换视图会打印BUILD SUCCESSFUL。手动安装以消息App not installed结束。我的错误是使用compileSdkVersion 'android-P',在更改为compileSdkVersion 28后一切正常。

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

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

这个问题通常发生在你运行不同项目的多个android studio窗口时。

解决办法是

  • 选择项目,然后删除。gradle并创建文件夹
  • 然后清理和重建项目。

请参考附带的屏幕截图

please ref screen shot attached .

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

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

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

PS:顺便说一句,我使用的是android studio 3.5

更新:

就像@Vishrut Mavani一样,改变你的发布版本的目标文件夹是工作

我尝试了很多方法来解决这个问题,但都没有用。当我试图生成一个签名apk时,我得到这个错误。

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

AS中的“Clean Project”函数不会清理生成apk的地方,有一个文件可能会阻塞整个过程:output.json

尝试删除输出。/app/projectname/release/output.json

我试过所有解决方案,没有一个帮助!最后,经过多次尝试,我明白了,只要按照提示:

  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. app level build.gradle (inside 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. app level build.gradle (inside 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

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

所有的解决方法对我都不起作用

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 .

所有的解决方案都不适合我
在我的例子中,从AndroidStudio 3.4+更新到3.5.
最后,我通过将“目标文件夹”修改为“app/build/outputs/apk”
来解决它 细节图片 < / p >

FOR Android Studio 3.5 | 3.6

调试构建在没有任何错误的情况下完成。创建带签名的.apk也会导致同样的错误

buildOutput.apkData must not be null

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

让我们假设当前目标路径为

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

改为

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

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

Android studio destination folder截图 .

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

我通过删除调试/输出修复了这个问题。Json和释放/输出。json文件

Android Studio 3.5 compilesdkVersion 28 < / p >

Apk产生工作

我也被这个bug惹恼了。但是将我的签名apk目的地c /用户/项目/应用程序改为c /用户/项目对我来说是有效的。

我尝试了以上多种解决方案,但没有发生什么,然后我发现了这个 和工作为我

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

现在我可以生成apk了

只要改变Apk发布/调试位置

例:

/home/sanaebadi/Desktop

变更后:

/home/sanaebadi/apk

1-删除所有生成的应用包(.aab)和所有变体的apk。

2-删除构建文件夹

3-洁净工程

手动删除所有现有的构建变量文件夹以及项目文件夹中的构建文件夹为我工作。

调试生成有签名的APK, 然后你可以为释放生成signed APK .

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

然后试试这些步骤:

步骤1:清洁项目(建立>清洁项目)

步骤2:重建项目(Build >重建项目)

我有android studio 3.5.1。对我来说,以下步骤是可行的

  1. File ->使缓存失效/重新启动
  2. 在android工作室重新启动后,单击Build ->清洁项目
  3. 然后Build ->重建项目

解决方案:-

1- Build -> Clean Project没有帮助

2-Build -> Make Project没有帮助

3 .重启android studio没有帮助

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

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

AS 4.0.1(通过snap安装)

Ubuntu 18.04 lts

通过构建变量配置构建。

invalidate cache / build / clean等组合本身并没有帮助,唯一有帮助的是将构建活动构建变体切换回armDebug,然后在那之后再进行clean / rebuild。

enter image description here

一旦我切换回我想要的变体,我就可以正确地构建。

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

在我的情况下,路径指向e:驱动器和其他解决方案不适合我。 我:< / p >
  1. 改变路径
  2. 路径必须在c:驱动器中

这就解决了问题