我的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)
        ...

当前回答

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

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

其他回答

所有的解决方法对我都不起作用 以我为例,从AndroidStudio 3.4+更新到3.5。 最后,我通过将“目标文件夹”修改为“app/build/outputs/apk”来解决它 细节图片

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

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

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

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

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

我试过所有的方法,没有一个有用!最后,经过多次尝试,我明白了,只要按照提示:

copy your signature keystrok (that you use to release) inside yourProject/app/ gradle.properties (modify values related to your own key): 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 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' } 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. finally this command:

mac: ./gradlew clean assemble_YOUR_FAVOR_Release

win: gradlew clean assembly _your_favor_release

其中_your_favor_是你的可选帮助,如果你不使用任何帮助,只需简单地使用assemblerrelease而不是assemble_YOUR_FAVOR_Release

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

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

之前

c:\user\folder\project\app

c:\user\folder\project\apk

Android Studio 3.4更新。

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

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

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

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