Как исправить "Сборка Gradle не смогла создать пакет Android". во флаттере
При запуске 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.
Я могу построить АПК без проблем, хотя. Я также могу создать appbundle из другого проекта Flutter.
Основываясь на сообщениях об ошибках выше, как бы вы начали искать проблему? В чем может быть проблема здесь?
Ответы
Ответ 1
У меня похожая проблема с теми же сообщениями об ошибках. (Build Release APK успешно, но не удалось собрать пакет приложений) Решение, которое работает для меня, заключается в обновлении версии Android Gradle. Ниже приведен конфиг, который работает для меня (Вы также можете обновить его до последней версии):
- /android/gradle/wrapper/gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
-
/android/build.gradle:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
Ответ 2
Я прокомментировал список API в app.gradle, и тогда он работает:
android {
splits {
abi {
//include "x86", "x86_64", "armeabi", "armeabi-v7a", "arm64-v8a"
}
}
}
Ответ 3
Для меня переход на AndroidX исправил все:
https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility
Ответ 4
Для меня в моей конфигурации выпуска файла приложения build.gradle
отсутствовала строка signatureConfig signatureConfigs.debug. Но ошибка, которую я получаю, та же: "Сборке Gradle не удалось создать пакет Android".
android {
...
buildTypes {
release {
signingConfig signingConfigs.debug
...
}
}
}
Ответ 5
Для меня изменение версии Gradle следующим образом решило проблему. (Я использовал более высокую версию)
андроид /build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
}
Ответ 6
Существует множество причин, по которым вы можете столкнуться с неприятной проблемой, например Gradle build failed to produce an Android bundle package
.
Что касается ответа @Tam Tam Tam, сначала попробуйте обновить ваш плагин gradle и android gradle до последней версии.
Если это не решит вашу проблему, попробуйте отключить все различные архитектуры и установите universalApk
на false
в вашем android/app/build.grade
в разделе split. Поместите что-то вроде этого:
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
, который не понятен флаттеру, он ожидает имена apk в другом формате, например просто app.apk
. Отключение всех разных архитектурных названий приводит их к общему пониманию :)
Если это также не работает, попробуйте вспомнить, измените ли вы имя пакета com.example.packagename
на что-то свое личное, например, com.mywebsite.packagename
. Если вы сделали это, то вы, вероятно, изменили его везде, где это необходимо, например, в build.gradle
и AndroidManifest.xml
, но вы можете забыть изменить его в своем java (или классе kotlin).
Чтобы ваше новое имя пакета работало, вы также должны изменить имя пакета в src/main/java/com/mywebsite/packagename/MainActivity.java
(в случае kotlin это src/main/kotlin/com/mywebsite/packagename/MainActivity.kt
)
Надеюсь, это поможет.