Как исправить сборку Gradle не удалось создать пакет пакета Android. в Flutter

При запуске flutter build appbundle я получаю следующую ошибку: Сборка Gradle не смогла создать пакет пакета Android.

При работе в подробном режиме я дополнительно получаю:

#0      throwToolExit (package:flutter_tools/src/base/common.dart:24:3)
#1      _buildGradleProjectV2 (package:flutter_tools/src/android/gradle.dart:585:7)
<asynchronous suspension>
#2      buildGradleProject (package:flutter_tools/src/android/gradle.dart:331:14)
<asynchronous suspension>
#3      buildAppBundle (package:flutter_tools/src/android/app_bundle.dart:43:10)
<asynchronous suspension>
#4      BuildAppBundleCommand.runCommand (package:flutter_tools/src/commands/build_appbundle.dart:43:11)
<asynchronous suspension>
#5      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:545:18)
#6      _asyncThenWrapperHelper.<anonymous closure> (dart:async/runtime/libasync_patch.dart:77:64)
#7      _rootRunUnary (dart:async/zone.dart:1132:38)
#8      _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#9      _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#10     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#11     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#12     Future._complete (dart:async/future_impl.dart:473:7)
#13     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#14     _AsyncAwaitCompleter.complete.<anonymous closure> (dart:async/runtime/libasync_patch.dart:33:20)
#15     _rootRun (dart:async/zone.dart:1124:13)
#16     _CustomZone.run (dart:async/zone.dart:1021:19)
#17     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#18     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#19     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#20     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:115:13)
#21     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:172:5)

Я использую стабильный канал Flutter v1.2.1.

Хотя я могу собрать apk без проблем. Я также могу собрать appbundle из другого проекта Flutter.

Основываясь на приведенных выше сообщениях об ошибках, как бы вы начали искать проблему? В чем может быть проблема?


person user2338826    schedule 05.05.2019    source источник


Ответы (9)


У меня аналогичная проблема с такими же сообщениями об ошибках. (Сборка релиза APK прошла успешно, но не удалось собрать пакет приложений) Решение, которое работает для меня, - это обновить версию Android Gradle. Ниже приведена конфигурация, которая мне подходит (вы также можете обновить ее до последней версии):

  1. /android/gradle/wrapper/gradle-wrapper.properties:

distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip

  1. /android/build.gradle:

    buildscript {
        repositories {
           google()
           jcenter()
          }
    
        dependencies {
           classpath 'com.android.tools.build:gradle:3.2.1'
        }
    }
    
person Tam Tam Tam    schedule 21.05.2019
comment
Большое спасибо! Мне также пришлось удалить ссылки на kotlin в моих файлах gradle (в трех разных местах) - person Jannie Theunissen; 14.06.2019
comment
Перед дальнейшим исследованием проблемы, я думаю, вы можете попробовать один трюк - создать новый проект флаттера с последним Android SDK, Android Gradle Plugin link и Flutter Version, чтобы убедиться, что ваша среда может сначала создать пакет приложений. Затем вы можете скопировать файлы dart в '/ lib' в новый проект, чтобы с этого момента создать пакет приложений, или попытаться изменить настройку градиента между новым проектом и существующим проектом, чтобы увидеть, в чем проблема. (Если у вас действительно такое же сообщение об ошибке в этом посте) - person Tam Tam Tam; 24.07.2019
comment
Если кто-то еще столкнется с этим, и это решение не решило проблему, проверьте, используете ли вы android.tools.build:gradle с версией 3.5.0. В настоящее время существует проблема с этой версией, см. эту проблему флаттера. Временное понижение до 3.4.2 решило проблему для меня. - person sceee; 28.08.2019

Я прокомментировал список API в app.gradle, и он работает:

android {
    splits {

        abi {

            //include "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a"

        }
    }
  }
person Ibrahim Ali    schedule 29.08.2019
comment
но разве вам не нужна эта строка, чтобы приложение работало на 32-битных и 64-битных устройствах ?? - person F-1; 13.09.2019
comment
@ F-1 Верно, эта строка не создает никаких проблем, если вы пытаетесь собрать пакет apk ..., Это происходит, если вы пытаетесь создать нормальный выпуск apk. Поэтому вы должны оставить его, когда вам понадобится его преимущество при использовании пакета! ... - person Ibrahim Ali; 14.09.2019
comment
Я понял, что вы не можете создать пакет приложений во Flutter, вам нужно сделать это в Android Studio. - person F-1; 14.09.2019
comment
Это работает для меня :) Спасибо - person Bernard Nongpoh; 01.03.2021

Существует множество причин, по которым вы можете столкнуться с такой неприятной проблемой, как Gradle build failed to produce an Android bundle package.

Что касается ответа @Tam Tam Tam, сначала попробуйте обновить плагин gradle и android gradle до последней версии.

Если это не решит вашу проблему, попробуйте отключить все разные архитектуры и установите universalApk на false в разделе android/app/build.grade в разделах. Ставьте примерно так:

splits {
        abi {
            enable true
            reset()
            // include 'x86', 'armeabi-v7a', 'x86_64'
            universalApk false
        }
    }

Это предложение было представлено здесь: https://github.com/flutter/flutter/issues/27462#issuecomment-507229131

Это происходит потому, что gradle генерирует apk в соответствии с соглашением, например, app-<architecture-name>.apk, что непонятно для flutter, он ожидает имена apk в другом формате, например, просто app.apk. Отключение имени всех разных архитектур приведет их к общему пониманию :)

Если это тоже не сработает, постарайтесь запомнить, изменили ли вы имя своего пакета com.example.packagename на что-то свое личное, например com.mywebsite.packagename. Если вы это сделали, то вы, вероятно, изменили его везде, где это было необходимо, например, в build.gradles и AndroidManifest.xml, но вы могли забыть изменить его в своем java (или классе kotlin).

Чтобы ваше новое имя пакета работало, вам также необходимо изменить имя пакета в src/main/java/com/mywebsite/packagename/MainActivity.java (в случае kotlin это src/main/kotlin/com/mywebsite/packagename/MainActivity.kt)

Надеюсь, это поможет.

person moshfiqur    schedule 18.10.2019

Я потерял часть конфига по умолчанию project.gradle

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}
person Alexufo    schedule 03.11.2020

Для меня переход на AndroidX исправил все:

https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility

person Akshar Patel    schedule 25.09.2019

Для меня в моей конфигурации выпуска build.gradle файла приложения отсутствовала строка signedConfig signatureConfigs.debug. Но я получал ту же ошибку: «Сборка Gradle не смогла создать пакет Android-пакета».

android {
    ...
    buildTypes {
        release {
            signingConfig signingConfigs.debug
            ...
        }
    }
}
person Darshan    schedule 09.10.2019

Для меня изменение моей версии gradle, поскольку следующая строка решила проблему. (Я использовал более высокую версию)

android / build.gradle

  dependencies {
     classpath 'com.android.tools.build:gradle:3.3.0'
  }
person Alvin Konda    schedule 09.10.2019

Вот мой сенарио:

Я использую удаленную машину от CI, чтобы подписать apk с конфигурацией знака выпуска. Я удалил buildTypes.release.signConfig из build.gradle следующим образом:

    buildTypes {
        release {
            // signingConfig signingConfigs.release
            minifyEnabled true
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

Это приводит к изменению имени выходного apk на app-release-unsigned.apk, но флаттер ожидает app-release.apk, что приводит к Gradle build failed to produce an Android bundle package.

После добавления signingConfig signingConfigs.release обратно проблема была решена.

person Ornithopter    schedule 19.11.2019

В моем случае я добавил аромат в свой проект и забыл добавить название аромата в Run / Debug Configuration.

person RaSha    schedule 12.01.2020