[英]Flutter release apk not accepted by Google Play Console
我按照官方 flutter 页面上的说明一步一步创建了一个密钥和密钥库并签署了我的 apk。
但是当我尝试将它上传到 Google Play Console 时,出现了这个错误:
“您上传了一个在调试模式下签名的 APK 或 Android App Bundle。您需要在发布模式下签署您的 APK 或 Android App Bundle”
之前有人问过类似的问题,但没有解决我的问题。
这是我的 app/build.gradle 的相关部分:
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "my.package.name"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
//testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
这是我的 Android Studio 版本的屏幕截图(Android SDK 为红色与此无关。):
我的 output.json 文件:
[
{
"outputType": {
"type": "APK"
},
"apkInfo": {
"type": "MAIN",
"splits": [
],
"versionCode": 1,
"versionName": "1.0.0",
"enabled": true,
"outputFile": "app-release.apk",
"fullName": "release",
"baseName": "release"
},
"path": "app-release.apk",
"properties": {
}
}
]
似乎没有任何建议有效。 然后,一个
扑干净
并且所有问题都解决了。 我可以通过 Android Studio 或命令行创建一个 apk。 感谢 VikaS 和 Harsha pulikollu
flutter clean
对我也不起作用。 所以我手动签署了 apk 并被 Google Play Console 接受。 在这里找到方向https://developer.android.com/studio/publish/app-signing#sign-manually
要手动签署 apk,您需要在 Windows 的命令提示符下的终端 o 中运行以下命令。
1 - 确保使用调试密钥对 apk 进行签名:
<build-tools-path>/<sdk-vesion>/apksigner verify --print-certs app-release.apk
(用你的apk文件名替换“app-release.apk”
如果使用调试密钥签名,则输出将类似于
Signer #1 certificate DN: C=US, O=Android, CN=Android Debug
Signer #1 certificate SHA-256 digest: 384cf54f892877ea6d934bbc335bf3aa61b8dd3d89e27feb49c0bc7e62b0bbb7
Signer #1 certificate SHA-1 digest: c7a8384ff8fe2d1e99dbdba45db93180ed53b9ff
Signer #1 certificate MD5 digest: ca13ad2688257283319bf2596f360f8c
2 - 运行 zipalign 以对齐第一个字节并减少 RAM 使用
<build-tools-path>/<sdk-vesion>/zipalign -v -p 4 app-release.apk app-aligned.apk
它将列出文件并以Verification succesful
消息结束。
3 - 运行 appsigner 来签署应用程序:
<build-tools-path>/<sdk-vesion>/apksigner sign --ks <path to .jks file> --out app-signed.apk app-aligned.apk
它将提示输入密钥库密码并静默完成工作。
4 - 验证它是否使用您的密钥签名:
<build-tools-path>/<sdk-vesion>/apksigner verify --print-certs app-signed.apk
如果签名正确,输出将类似于第一步,但它会输出您的证书数据,而不是“Android Debug”。
当 apk 或 android 应用程序包在调试模式下签名并上传时,会发生这种情况。
所以请确保您在build.gradle 中有发布
buildTypes {
release {
minifyEnabled true
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
}
}
以及只需将yourkeystore.jks文件放在android/app/yourkeystore.jks 中,这样您就不必提及完整路径。
现在路径将是
storePassword=yourkeystore
keyPassword=yourkeystore
keyAlias=yourkeystore
storeFile=yourkeystore.jks
这些是在扑扑中找到了build-tools-pathsdkvesion吗
尝试
flutter clean
每当应用程序显示一些荒谬的行为时,flutter clean 命令在许多情况下都非常有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.