我使用 flutter 构建了我的应用程序包,然后按照建议使用 jarsigner 对其进行了签名。
jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore keystore.jks -storepass *** -keypass *** signed.aab *keyalias*
但是,当我将应用程序包上传到 Google Play 商店时,出现此错误
您的 Android App Bundle 具有超过 1 个证书链。确保您的 App Bundle 只有 1 个证书链,然后重试。
您必须在 Flutter 中默认配置签名。如果是这样,再次应用 jarsigner 将进行第二次签名。
如果您想使用
jarsigner
进行签名,请考虑从 Gradle 配置中删除 signing block 或在运行 *.RSA
之前手动删除 *.DSA
目录下的 *.MF
、META-INF
和 jarsigner
文件命令。
也许更好的方法是直接在 Gradle 配置中正确设置签名配置,这样你就根本不需要运行
jarsigner
。
我使用 jarsigner 使用错误的别名签署了我的应用程序,然后使用正确的别名对其进行了签名,从而导致此错误。重建你的 apk 或 aab 然后退出。
请检查您的
build.gradle.kts
- 可能有多个signingConfig
块或定义了签名配置的多个位置。
这个代码块就是一个例子,它指定了一个
signingConfigs{}
块,但也初始化了另一个 debug
signingConfig - 请参阅下面关于 buildTypes 块的注释行。
//signing config block
signingConfigs {
create("release") {
.....
storeFile = file("keystore/your_keystore.jks")
storePassword = System.getenv("SIGNING_STORE_PASSWORD")
keyAlias = System.getenv("SIGNING_KEY_ALIAS")
keyPassword = System.getenv("SIGNING_KEY_PASSWORD")
}
}
buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
//signingConfig = signingConfigs.getByName("debug")
}
}