繁体   English   中英

如何修复“Gradle 构建无法生成 Android 捆绑包”。 在颤振中

[英]How to fix "Gradle build failed to produce an Android bundle package." in Flutter

在运行flutter build appbundle我收到以下错误:Gradle build failed to flutter build appbundle an Android bundle package。

在详细模式下运行时,这是我另外得到的:

#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。 我还可以从另一个 Flutter 项目构建一个 appbundle。

根据上面的错误消息,您将如何开始查找问题? 这里可能有什么问题?

我有相同的错误消息的类似问题。 (构建发布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' } }

我在app.gradle 中评论了 API 列表,然后它就可以工作了:

android {
    splits {

        abi {

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

        }
    }
  }

有多种原因可能会导致您遇到令人沮丧的问题,例如Gradle build failed to produce an Android bundle package

根据@Tam Tam Tam 的回答,首先尝试将您的 gradle 和 android gradle 插件更新到最新版本。

如果不解决您的问题,然后尝试禁用所有不同的架构和设置universalApkfalse在你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.gradle s 和AndroidManifest.xml但您可能忘记在您的 java(或 kotlin 类)中更改它。

为了使您的新包名有效,您还必须更改src/main/java/com/mywebsite/packagename/MainActivity.java的包名(在 kotlin 的情况下,它是src/main/kotlin/com/mywebsite/packagename/MainActivity.kt )

我希望这有帮助。

我丢失了默认 project.gradle 的部分配置

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

对我来说,迁移到 AndroidX 解决了所有问题:

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

对我来说,我的应用程序的build.gradle文件的发布配置中缺少signingConfig 的 signingConfigs.debug行。 但是我得到的错误是相同的“Gradle build failed to generate an Android bundle package”。

android {
    ...
    buildTypes {
        release {
            signingConfig signingConfigs.debug
            ...
        }
    }
}

对我来说,按照以下行更改我的 gradle 版本解决了这个问题。 (我用的是更高版本)

android/build.gradle

  dependencies {
     classpath 'com.android.tools.build:gradle:3.3.0'
  }

这是我的情景:

我正在使用来自 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但 flutter 期望app-release.apk ,这导致Gradle build failed to produce an Android bundle package.

添加signingConfig signingConfigs.release后问题就解决了。

就我而言,我向我的项目添加了风味,但忘记将风味名称添加到运行/调试配置中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM