You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter构建AAB签名失败 jarsigner提示无manifest如何解决

问题修复方案

核心配置错误修正

你贴的签名配置存在两个显性问题,也是这类报错最常见的诱因:

  1. 你将v1SigningEnabled、v2SigningEnabled两个签名开关写在了key.properties文件读取的with闭包内部,这两个参数属于signingConfigs的根级配置项,嵌套在文件读取闭包中时,部分Gradle版本会因为作用域问题无法识别配置,直接跳过签名流程。
  2. 你只定义了signingConfigs块,没有在buildTypes.release中显式绑定这个签名配置——Gradle不会自动给release构建套用自定义签名规则,这是90%同类报错的根本原因。

修正后的android/app/build.gradle签名相关配置参考如下,你项目里其他原有配置(比如compileSdk、namespace、混淆规则等)保留不动即可:

android {
    // 原有其他配置保留

    signingConfigs {
        release {
            storeFile file("../keystore.jks")
            // 签名开关必须放在配置根层级,不要嵌套在properties读取逻辑里
            v1SigningEnabled true
            v2SigningEnabled true
            
            def propFile = file("../key.properties")
            if (propFile.canRead()) {
                def properties = new Properties()
                properties.load(new FileInputStream(propFile))
                storePassword = properties['storePassword']
                keyAlias = properties['keyAlias']
                keyPassword = properties['keyPassword']
            } else {
                storePassword = System.getenv("STORE_PASSWORD")
                keyAlias = System.getenv("KEY_ALIAS")
                keyPassword = System.getenv("KEY_PASSWORD")
            }
        }
    }

    buildTypes {
        release {
            // 最容易遗漏的配置:显式绑定release签名,不写这行签名不会生效
            signingConfig signingConfigs.release
            // 原有其他release配置比如minifyEnabled、shrinkResources等保留
        }
    }
}

其他排查项

  • 构建前先执行flutter clean清空历史构建缓存,使用正式release命令构建AAB:flutter build appbundle --release,不要使用debug模式构建上传。
  • 不要被jarsigner的校验结果误导:jarsigner是为传统JAR/APK格式设计的校验工具,对AAB格式兼容性很差,返回no manifest属于典型的工具误报,不代表AAB真的缺失签名。正确的AAB校验方式是用官方bundletool工具,进入构建产物目录build/app/outputs/bundle/release/后执行bundletool validate --bundle app-release.aab,只要输出结果没有签名相关错误,就说明AAB签名状态正常。
  • 如果你使用的Gradle版本在7.0及以上,检查项目根目录gradle.properties中是否存在android.enableV1Signing=false、android.enableV2Signing=false这类全局签名开关配置,有的话直接删除,这类配置会覆盖build.gradle里的签名设置。
  • 你当前的keystore是PKCS12格式,如果修正配置后仍然签名失败,可以将其转换为JKS格式规避版本兼容问题,转换命令如下,转换后把配置里的storeFile路径指向新生成的JKS文件即可:
    keytool -importkeystore -srckeystore ./keystore.jks -srcstoretype PKCS12 -destkeystore ./keystore_converted.jks -deststoretype JKS
    

修正配置重新构建后,上传Play Console就不会再出现The Android App Bundle was not signed报错。

内容的提问来源于stack exchange,提问作者Gaddo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:42:53