Причина: buildOutput.apkData не должен быть нулевым

245

Мое приложение для Android, использующее Kotlin, выдает это исключение, когда я пытаюсь запустить «приложение» в эмуляторе o в моем мобильном телефоне. Когда я строю свой проект, он работает хорошо, без ошибок.

Я использую:

  • SDK 28 (Android 9.0 (пирог))
  • 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)
        ...
jzelar
источник
3
Я создал тикет issetracker.google.com/issues/129994596
Евгений Мартынов,
3
У меня то же самое после того, как я обновил Android Studio до 3,4
Эндрю
2
Проверьте ответ Лемберга, который работает для меня, я столкнулся с этой проблемой сегодня
Ники
То же самое для Java (не обязательно Kotlin) после установки Android Studio 3.5.
Patapoom

Ответы:

312

Нажмите 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
Я могу подтвердить, что это работает также с версией com.android.tools.build:gradle:3.5.0-alpha05Build-> Rebuild Projectв AS)
kikoso
1
К сожалению, это требует обновления до Android Studio 3.5, я не могу сказать своей команде переключиться на нестабильный канал для обновлений Android Studio.
void.pointer
8
Работает на Android Studio 3.4
Рафаэль
6
пытаясь на AndroidStudio3.5 на Mac OS, все SDK обновлены, используя версию Gradle com.android.tools.build:gradle:3.5.0, это решение не работает для меня
Mihodi Lushan
1
пробовал те, да, я получаю эту ошибку. @MartinPfeffer
Миходи Лушан
151

Для Android Studio 3.5Обновление. (APK подписан вопрос)

Шаг 1: Я решил эту проблему, изменив расположение папки назначения .

Перед

c:\user\folder\project\app

После

c:\user\folder\project\apk


Для Android Studio 3.4Обновление.

Шаг 1: После обновления Android Studio 3.4 вам нужно добавить все зависимости, которые используются в вашем модуле или библиотеке, на уровне приложения build.gradle.

Шаг 2: Чистый проект (Build> Clean Project)

Шаг 3: Перестроить проект (Build> Rebuild Project)

Теперь ваш проект будет отлично скомпилирован.

Вишрут Мавани
источник
1
что это такое? что мне делать именно? > Шаг 1. После обновления Android Studio 3.4 вам нужно добавить все зависимости, которые использовались в вашем модуле или библиотеке, в ваш build.gradle уровня приложения.
Babay
1
@babay Предположим, вы используете любую библиотеку, которая использует библиотеку Glide. Затем вы должны добавить свою зависимость Glide в ваш уровень приложения build.gradle.
Вишрут Мавани
1
@VishrutMavani Спасибо за ваш ответ, но я обнаружил действительно глупую ошибку Android-студии. Я просто изменил путь вывода сборки. То есть. Решение от Шухам Джайн. Смотрите ниже его решение.
Джеймс
5
Это исправило мою проблему в Android Studio v3.5 и проекте Java. Это довольно стандартное явление при создании приложений Android сейчас ... (1) появляется странная непонятная ошибка сборки (2) google it (3) переполнение стека (4) применяет кажущийся несвязанным обходной путь в определенном порядке (5) молитва (6) ) это работает (7) перейти к шагу (1)
dodgy_coder
2
Я не могу поверить, что рабочим решением этой проблемы на самом деле является «Изменить папку назначения». Но это! ¯ \ _ (ツ) _ / ¯
Мкасберг
138

ДЛЯ Android Studio 3.5 | 3,6

отладочные сборки заканчиваются без ошибок. При создании подписанного .apk приводит к той же ошибке

buildOutput.apkData must not be null

Простое решение, которое я нашел, это. Во время подписания apk после ввода учетных данных для подписи, когда вы переходите к следующему экрану, он запросит папку назначения, просто измените путь по умолчанию.

Давайте предположим, что текущий путь назначения

C: \ пользователь \ папка \ Проект \ приложение

измените это на

C: \ папка пользователя \ Проект \ \

тогда он успешно сгенерирует подписанный apk.

Скриншот папки назначения студии Android

Шубхам Джайн
источник
5
Я действительно ценю ваше решение. Спасибо. Это просто и очень глупая ошибка сборки Android Studio.
Джеймс
2
Вау, ты спас мне жизнь этим. Однако это ошибка в Android Studio или мой проект испорчен?
Виджай Кумар Канта
1
О боже, это обновление Android Studio до 3.5 приносит мне много проблем.
Энрике Монте
1
Очень полезно в Android 3.5.2
CodeFluid
1
Спасибо и хорошее решение. Я обновил Android Studio даже эта ошибка возникает в Android Studio 3.6. Это решение спасло мой день.
Еще
49

Я также получал эту ошибку при попытке «Создать подписанный APK» для моей версии выпуска. Я перепробовал все вышеперечисленные методы, к сожалению, ни один из них не работал для меня.

То, что сработало, сначала генерировало отладочную подписанную версию приложения, а затем снова генерировало релизную.

Я не знаю, что именно изменилось или какова была первоначальная проблема, но это сработало. Я надеюсь, что это тоже поможет вам, потому что эта ошибка довольно раздражает ...

Kuruchy
источник
1
В моем случае мне нужно сгенерировать apk первого продукта (отладка до релиза) до последнего (отладка до релиза).
Фрукт
3
Да!! У меня это тоже сработало. Спасибо. Я не знаю почему, но это похоже на ошибку.
Doongsil
3
пытаясь на AndroidStudio3.5 на Mac OS, все SDK обновлены, используя версию Gradle com.android.tools.build:gradle:3.5.0, это решение не работает для меня
Mihodi Lushan
1
В моем случае: AndroidStudio3.5, Build bundle (s) / apk (s) => Построить apk (s), затем создать подписанный APK
соло,
1
Это безумие, но это решение работает - я не понимаю почему. Android Studio 3.5, Windows
cVoronin
22

Очистка проекта мне не помогла, но помогло удаление всех автоматически сгенерированных папок сборки во всех модулях. введите описание изображения здесь

Роман Назаревич
источник
Это эквивалент очистки проекта.
devgianlu
4
Нет, не пытайтесь очистить проект из Android Studio, а затем проверьте каталог приложений на наличие buildкаталогов в любом файловом обозревателе, вы увидите, что некоторые файлы все еще остаются там.
Роман Назаревич
В моем случае у меня было несколько разновидностей, это работало, как только я удалил всю папку сборки вместе с папками, специфичными для Flavor. После удаления папок мне пришлось закрыть проект и снова открыть, чтобы он
Хари
пытаясь на AndroidStudio3.5 на Mac OS, все SDK обновлены, используя версию Gradle com.android.tools.build:gradle:3.5.0, это решение не работает для меня
Mihodi Lushan
18

Обновление до Android Studio 3.4. я получаю сообщение

Причина: buildOutput.apkData не должен быть нулевым

в поисках ответа я нашел процедуру:

Build -> Clean Project

но это не сработало, я знаю, что эта процедура удалит содержимое в /buildкаталог, но, по моему опыту, это не работает во всех случаях, поэтому я попробовал «сырой» способ, удалив каталог:

/app/build/ 

Затем я перестроил проект, и он заработал.

Jorgesys
источник
2
Это сработало для меня, но мне пришлось также удалить все <flavor>/<buildConfig>каталоги (речь идет о output.jsonфайлах в них). Clean projectодин не решил проблему.
Javaxian
11

Я пробовал выше несколько решений, но ничего не произошло, потом я нашел это и работал на меня

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

Теперь я могу сгенерировать apk

Рохан Павар
источник
9

Все решения не работали со мной

Android Studio V 3.5

Android Gradle плагин V 3.4.2

Gradle Версия V 5.1.1

  1. Очистить проект
  2. Перезапустите Android Studio + Неправильные кэши
  3. Удалить папку сборки, отладки и выпусков
  4. Сделать проект
  5. Создать подписанный APK

Ссылка

Qays Dwekat
источник
7

Я пробовал много вещей, чтобы решить проблему, но ничего не помогло. Я получаю эту ошибку при попытке создать подписанный apk.

Снижение до более старых версий Android Studio помогло (3.4.2), но это не решение.

Функция «Очистить проект» в AS не очищает место, где создается ваш сгенерированный apk, и есть один файл, который может блокировать всю процедуру: output.json

Попробуйте удалить файл output.json из ... / app / projectname / release / output.json

TheScriptan
источник
5

Я использовал Android Studio 3.5 beta 2, и у меня была точно такая же ошибка, но только при сборке релиза. Попробовав любое другое решение, которое я нашел, единственный способ, которым я смог снова скомпилировать, - это вернуться в Android Studio 3.4.

ампер
источник
Это «решение» также сработало для меня. Перейдите на AS 3.4.2, загрузите здесь: developer.android.com/studio/archive и
перейдите
4

Меня устраивает:

  1. удалить папку сборки из вашего проекта вручную.

  2. в терминале андроид студии наберите эту команду

если пользователь Windows

gradlew clean build

если пользователь Linux

./gradlew clean build
Абхишек Гарг
источник
1
пытаясь на AndroidStudio3.5 на Mac OS, все SDK обновлены, используя версию Gradle com.android.tools.build:gradle:3.5.0, это решение не работает для меня
Mihodi Lushan
4

Эта проблема обычно возникает, когда вы запускаете несколько окон Android Studio с различными проектами.

Решение

  • выберите проект, затем удалите .gradle и создайте папки
  • чем чистить и перестраивать проект.

пожалуйста, ссылка на скриншот прилагается

пожалуйста, ссылка на скриншот прилагается

Суреш Майдараги
источник
пытаясь на AndroidStudio3.5 на Mac OS, все SDK обновлены, используя версию Gradle com.android.tools.build:gradle:3.5.0, это решение не работает для меня
Mihodi Lushan
Можете ли вы попробовать File> Invalidate caches / Restart после удаления автоматически сгенерированных файлов .gradle и сборки @MihodiHasanLushan
Suresh Maidaragi
4

Просто измените место выпуска / отладки Apk .

EX:

/home/sanaebadi/Desktop

после изменения:

/home/sanaebadi/apk
сана эбади
источник
3

Решением для меня было удалить все файлы и папки из выходной папки apk. У меня была эта проблема, когда создание подписанного apk для «производственного» аромата и output.jsonв выходной папке «feature» вызывает проблему -> Android Studio 3.6 Canary 7показало мне правильное сообщение об ошибке. Это также работает сейчас для AS 3.5 стабильной с Gradle Plugin 3.5.0.

3dmg
источник
3

Все решения не работали со мной.
В моем случае с AndroidStudio 3.4+ обновление до 3.5.
И , наконец , я решить ее ИЗМЕНЯЮТ «Destination Folder» в «приложение / сборки / выходы / APK»
подробно рис

бассейн
источник
2

единственное решение, которое работает для меня, это использование в моем корневом Gradle

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

что я пробовал: - очистить все папки сборки вручную - сделать кеш недействительным, но ничего из этого не работает

PS: я использую Android Studio 3,5 кстати

Обновить :

Как и @Vishrut Mavani, изменение папки назначения вашей версии релиза работает

justnoone
источник
2

Обычно эта проблема возникает при обновлении Android Studio V3.4 до V3.5. Попробуйте удалить debug/output.jsonи release/output.jsonфайлы.

Затем попробуйте эти шаги:

Шаг 1: Чистый проект (Build> Clean Project)

Шаг 2: Перестроить проект (Build> Rebuild Project)

Масуд Мохтари
источник
2

У меня андроид студия 3.5.1. Для меня ниже шаги работают

  1. File -> Invalidate Caches / Restart
  2. После перезапуска андроид-студии нажмите Build -> Clean project
  3. Затем Build -> Перестроить проект
Сачин Танпуре
источник
1

В моем случае проект сборки и запуска с различными конфигурациями сборки прошел успешно. Но, Cause: buildOutput.apkData must not be nullс другой стороны, при генерации подписанного apk throws error был сгенерирован apk, и вывод печати Build Output переключался BUILD SUCCESSFUL. Ручная установка заканчивается сообщением App not installed. По моей вине пользовался compileSdkVersion 'android-P'и после смены compileSdkVersion 28все идет хорошо.

Станислав Бондарь
источник
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. наконец эта команда:

макинтош: ./gradlew clean assemble_YOUR_FAVOR_Release

выиграть: gradlew clean assemble_YOUR_FAVOR_Release

где _YOUR_FAVOR_ваша дополнительная услуга, если вы не используете какую-либо услугу, просто используйте assembleReleaseвместоassemble_YOUR_FAVOR_Release

AlirezaXX
источник
1

Эта проблема возникает после обновления моей Android Studio v3.4 до v3.5 Теперь она работает нормально

Я исправил эту проблему, удалив файлы debug / output.json и release / output.json

Android Studio 3.5 compilesdk Версия 28

apk создание рабочих

Прадип П
источник
1

Меня тоже раздражал тот же баг. Но мне поменялось назначение подписанного apk с c / users / project / app на c / users / project .

Сартхак Шарма
источник
1

1. Удалите все сгенерированные пакеты приложений (.aab) и APK для всех вариантов.

2- Удалить папку сборки

3- чистый проект

Ислам Асси
источник
1

Удалите вручную всю существующую папку варианта сборки, а также папку сборки в папке проекта.

Thamilvanan
источник
0

Создайте подписанный APK для отладки , а затем вы можете создать подписанный APK для выпуска .

Дита Аджи Пратама
источник
0

Решение :-

1- Build -> Clean Projectне помогло

2- Build -> Make Projectне помогло

3 - перезапустить андроид студию не помогло

4 - вручную удалить папку сборки из appи projectне помогло

единственным решением для меня было удалить все старые сборки из папки назначения

Атеф Фарук
источник
-1

Кажется, очистка проекта может решить проблему, но для меня это сработало так.

Файл-> синхронизировать проект с файлами Gradle.

Брахми Адигопула
источник