Cause: buildOutput.apkData must not be null
当我尝试在手机的模拟器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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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) ... |
点击
然后
在gradle 3.5.0-alpha3,-alpha5和3.4.0上测试(项目gradle)
1 | classpath 'com.android.tools.build:gradle:3.5.0-alpha03' |
For Android Studio 3.5 & 3.6 Update. (APK signed issue)
步骤1:我已经通过修改目标文件夹位置解决了此问题。
之前
1 | c:\\user\\folder\\project\\app |
后
1 | c:\\user\\folder\\project\\apk |
> **适用于Android Studio`3.4`更新。**
步骤1:更新Android Studio 3.4之后,您需要在应用程序级别
步骤2:清理项目(构建>清理项目)
步骤3:重建项目("构建">"重建项目")
现在,您的项目将完美编译。
对于Android Studio 3.5 | 3.6
调试构建完成,没有任何错误。在创建签名的.apk时会导致相同的错误
1 | buildOutput.apkData must not be null |
我发现的简单解决方案是。在导航到下一个屏幕时,在输入签名凭据后的apk签名过程中,它将询问目标文件夹,只需更改默认路径即可。
假设当前目标路径为
c:\\user\\folder\\project\\app
更改为
c:\\user\\folder\\project\\
然后它将成功生成签名的apk。
尝试为我的发行版"生成签名的APK"时,我也收到此错误。
我尝试了上述所有方法,但不幸的是,没有一种方法对我有用。
有效的方法是,首先生成应用程序的调试签名版本,然后再次生成发行版。
我不知道到底是什么发生了什么变化或最初的问题是什么,但它确实有效。我希望它也会对您有帮助,因为此错误非常烦人...
清理项目对我没有帮助,但是手动删除所有模块中的所有自动生成的构建文件夹很有帮助。
更新到Android Studio 3.4。?,我收到消息
Cause: buildOutput.apkData must not be null
寻找答案,我找到了程序:
但是它不起作用,我知道此过程会将内容删除到
1 | /app/build/ |
然后,我重建该项目,它奏效了。
我尝试了多种解决方案,但什么都没发生,然后我发现了
这为我工作
1 | deleting debug/output.json and release/output.json solved my problem |
现在我可以生成apk
所有解决方案都不适用于我
Android Studio V 3.5
Android Gradle插件V 3.4.2
Gradle版本5.1.1
参考
我已经尝试了很多方法来解决该问题,但是没有任何帮助。尝试生成签名的apk时出现此错误。
降级到旧版本的Android Studio可以帮助(3.4.2),但是这不是解决方案。
AS中的"清理项目"功能不会清理生成的apk的创建位置,并且可能有一个文件阻止了整个过程:output.json
尝试从... / app / projectname / release / output.json中删除output.json
我使用的是Android Studio 3.5 beta 2,并且遇到的错误完全相同,但仅限于发布版本。在尝试了我发现的所有其他解决方案之后,我能够再次编译的唯一方法是回到Android Studio 3.4。
这个对我有用:
手动从项目中删除构建文件夹。
在android studio的终端中键入以下命令
如果Windows用户
1 | gradlew clean build |
如果是Linux用户
1 | ./gradlew clean build |
只需更改Apk发行/调试位置。
例如:
1 | /home/sanaebadi/Desktop |
更改后:
1 | /home/sanaebadi/apk |
通常,当您使用不同的项目运行多个android studio窗口时,通常会发生此问题。
解决方法是
- 选择项目而不是删除.gradle并构建文件夹
- 而不是清理和重建项目。
请参考所附的屏幕截图
对我来说,解决方案是从apk输出文件夹中删除所有文件和文件夹。
为"生产"样式创建签名的apk时出现此问题,"功能"输出文件夹中的
现在也可以通过Gradle Plugin 3.5.0在AS 3.5稳定版中使用。
所有解决方案都不适用于我
就我而言,从AndroidStudio 3.4+更新到3.5。
最后,我将"目标文件夹"修改为" app / build / outputs / apk"来解决
详细图片
唯一适用于我的解决方案是在我的root gradle中使用
1 | classpath 'com.android.tools.build:gradle:3.3.0' |
我尝试过的
-手动清除所有构建文件夹
-使缓存无效
但这些都不是工作
PS:我正在使用android studio 3.5 btw
更新:
就像@Vishrut Mavani一样,更改发行版本的目标文件夹也是可行的
通常,此问题发生在将Android Studio V3.4更新到V3.5时。
尝试删除
然后尝试以下步骤:
步骤1:清理项目(构建>清理项目)
步骤2:重建项目("构建">"重建项目")
我有android studio 3.5.1。对我来说,下面的步骤是有效的
解决方案 :-
1-
2-
3-重新启动Android Studio没有帮助
4-从
我唯一的解决方案是从目标文件夹中删除所有旧版本
将我的Android Studio v3.4更新到v3.5后,会发生此问题
现在,它工作正常
我通过删除debug / output.json和release / output.json文件解决了此问题
Android Studio 3.5
编译器版本28
APK生成工作
同样的错误也让我很生气。但是将我的Signed apk目的地从c / users / project / app更改为c / users / project对我有用。
就我而言,具有不同构建配置的构建和启动项目是成功的。但是另一方面,生成带符号的apk引发错误
1-删除所有变体的所有生成的应用程序捆绑包(.aab)和APK。
2-删除构建文件夹
3-清洁项目
手动删除所有现有的构建变体文件夹以及对我有用的项目文件夹中的构建文件夹。
生成带签名的APK进行调试,
然后您可以生成签名的APK进行发布。
我已经尝试了所有解决方案,但没有一个可以帮到您!经过多次尝试,我终于明白了,只要遵循提示即可:
1 2 3 4 5 | 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 |
应用程序级别build.gradle(在android内部):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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' } |
1 2 3 4 5 6 7 | release { manifestPlaceholders = [analytics_deactivated:"false"] minifyEnabled true signingConfig signingConfigs.release useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } |
5.最后这个命令:
mac:
赢:
其中
AS 4.0.1(通过快照安装)
Ubuntu 18.04版本
通过构建变体配置构建。
无效的缓存/构建/清理等组合本身并没有帮助,唯一有用的是将构建活动的构建变体切换回
一旦切换回所需的变体,便可以正确构建。
似乎清理项目可以解决问题,但对我来说,它的工作原理是这样的。
File->sync project with gradle files.