266 votes

Cause : buildOutput.apkData ne doit pas être nul

Mon application Android utilisant Kotlin lève cette exception lorsque j'essaie de lancer 'app' dans l'émulateur de mon téléphone portable. Lorsque je construis mon projet, il fonctionne bien, sans aucune erreur.

J'utilise :

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

3 votes

3 votes

J'ai le même problème après avoir mis à jour Android Studio en 3.4.

2 votes

Vérifiez la réponse de Lemberg qui fonctionne pour moi, j'ai été confronté à ce problème aujourd'hui.

325voto

Martin Pfeffer Points 85

Cliquez sur Build -> Clean Project

Entonces Build -> Make Project

Testé sur gradle 3.5.0-alpha3, -alpha5 et 3.4.0 (projet gradle)

classpath 'com.android.tools.build:gradle:3.5.0-alpha03'

1 votes

Je peux confirmer que cela fonctionne également avec la version com.android.tools.build:gradle:3.5.0-alpha05 (avec Build -> Rebuild Project en AS)

0 votes

Fonctionne également pour classpath 'com.android.tools.build:gradle:3.4.0-rc02'

1 votes

Malheureusement, cela nécessite une mise à niveau vers Android Studio 3.5, je ne peux pas dire à mon équipe de passer à un canal instable pour les mises à jour d'Android Studio.

161voto

Vishrut Mavani Points 1184

Pour Android Studio 3.5 & 3.6 Update (problème de signature de l'APK)

Étape 1 : J'ai résolu ce problème en modifiant le Dossier de destination emplacement.

Avant

c:\user\folder\project\app

Après

c:\user\folder\project\apk

> **Pour Android Studio `3.4` Update.**

Étape 1 : Après la mise à jour Android Studio 3.4 vous devez ajouter toutes les dépendances utilisées dans votre module ou bibliothèque au niveau de votre application. build.gradle .

Étape 2 : Clean Project(Build > Clean Project)

Étape 3 : Reconstruire le projet (Build > Rebuild Project)

Maintenant, votre projet va se compiler parfaitement.

159voto

Shubham Jain Points 517

POUR Android Studio 3.5 | 3.6

debug se terminent sans aucune erreur. La création d'un .apk signé conduit à la même erreur.

buildOutput.apkData must not be null

La solution simple que j'ai trouvée est la suivante. Pendant la signature de l'apk, après avoir entré les informations d'identification de la signature, lorsque vous passez à l'écran suivant, il vous sera demandé le dossier de destination, changez simplement le chemin par défaut.

Supposons que le chemin de destination actuel soit

c : \user\folder\project\app

le changer en

c : \user\folder\project\

alors il va générer l'apk signé avec succès.

Android studio destination folder screenshot

53voto

Kuruchy Points 897

J'ai également obtenu cette erreur lorsque j'ai essayé de "Générer un APK signé" pour ma version de lancement. J'ai essayé toutes les méthodes ci-dessus, malheureusement aucune n'a fonctionné pour moi.

Ce qui a fonctionné, c'est de générer d'abord la version debug signée de l'application, puis de générer à nouveau la version release.

Je ne sais pas ce qui a changé exactement ou quel était le problème initial, mais ça a marché. J'espère que cela vous aidera aussi, car cette erreur est assez ennuyeuse...

1 votes

Dans mon cas, j'ai besoin de générer un apk de la première version du produit (du débogage à la sortie) à la dernière version (du débogage à la sortie).

4 votes

Oui !! Ça a marché pour moi aussi. Merci. Je ne sais pas pourquoi mais ça ressemble à un bug.

3 votes

Essai sur AndroidStudio3.5 sur Mac OS, tous les sdk mis à jour, en utilisant la version gradle com.android.tools.build:gradle:3.5.0 cette solution ne fonctionne pas pour moi

23voto

Lemberg Points 829

Le nettoyage du projet ne m'a pas aidé, mais la suppression manuelle de toutes les données générées automatiquement par le projet. construire dans tous les modules ont aidé. enter image description here

0 votes

C'est l'équivalent du nettoyage du projet.

4 votes

Non, ce n'est pas le cas, essayez de nettoyer le projet à partir d'Android Studio, puis vérifiez le répertoire App à la recherche de build dans n'importe quel explorateur de fichiers, vous verrez que certains fichiers y sont toujours présents.

0 votes

Dans mon cas, j'avais plusieurs saveurs, cela a fonctionné une fois que j'ai supprimé tous les dossiers de construction ainsi que les dossiers spécifiques aux saveurs. Après avoir supprimé les dossiers, j'ai dû fermer le projet et le rouvrir pour qu'il fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X