如何修复“ Gradle构建无法产生Android捆绑包”。在Flutter

时间:2019-05-05 09:21:01

标签: build flutter android-gradle android-app-bundle

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

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

9 个答案:

答案 0 :(得分:1)

我在 app.gradle 中评论了API列表,然后它起作用了:

android {
    splits {

        abi {

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

        }
    }
  }

答案 1 :(得分:1)

您可能会遇到许多令人沮丧的问题,例如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会遵循约定,例如app-<architecture-name>.apk生成apk,而flutter无法理解,因此它会期望apk名称采用另一种格式,例如简单地app.apk。禁用所有不同的架构名称会使他们有一个共识:)

如果这也不起作用,请尝试记住是否将软件包名称com.example.packagename更改为您自己的个人名称,例如com.mywebsite.packagename。如果已经完成,则可能在build.gradleAndroidManifest.xml中需要的任何地方进行了更改,但是您可能忘记了在Java(或kotlin类)中进行更改。

要使新的程序包名称生效,还必须在src/main/java/com/mywebsite/packagename/MainActivity.java中更改程序包名称(如果是kotlin,则为src/main/kotlin/com/mywebsite/packagename/MainActivity.kt

我希望这会有所帮助。

答案 2 :(得分:0)

对于相同的错误消息,我也有类似的问题。 (成功建立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'
        }
    }
    

答案 3 :(得分:0)

对我来说,迁移到AndroidX可以修复所有问题:

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

答案 4 :(得分:0)

对我来说,我的应用build.gradle文件的发布配置中缺少 signingConfig signingConfigs.debug 行。但是我遇到的错误是相同的“ Gradle构建无法产生Android捆绑包”。

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

答案 5 :(得分:0)

对我来说,更改我的gradle版本可以解决以下问题。 (我使用的是更高版本)

android / build.gradle

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

答案 6 :(得分: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后,问题已解决。

答案 7 :(得分:0)

在我的情况下,我在项目中添加了flavor,却忘记在“运行/调试配置”中添加flavor名称。

答案 8 :(得分:0)

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

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