Google Play控制台不接受Flutter版本apk

时间:2019-02-24 08:57:21

标签: android flutter google-play-console

我按照official flutter page.

中的说明逐步创建了一个密钥和密钥库并签署了我的apk。

但是当我尝试将其上传到Google Play控制台时,出现此错误:

  

“您上传了在调试模式下签名的APK或Android应用程序捆绑包。您需要在发布模式下对APK或Android应用程序捆绑包进行签名”

A similar question被问到了,但没有解决我的问题。

这是我的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与之无关。)

enter image description here

我的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":{}}]

6 个答案:

答案 0 :(得分:3)

似乎没有任何建议在起作用。然后,一个

  

干净整洁

,所有问题均已解决。我可以通过Android Studio或命令行创建和apk。感谢VikaS和Harsha pulikollu

答案 1 :(得分:2)

构建APK时需要选择 If (CheckConnection.checkCon(this)){ Call Volley; }else{ Log.d("Tag","No internet"); } 选项

对于Windows

enter image description here

对于苹果公司

enter image description here

答案 2 :(得分:1)

当 apk 或 android 应用程序包在调试模式下签名并上传时,会发生这种情况。

因此请确保您在 build.gradle

中有 release
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

答案 3 :(得分:0)

flutter clean也不适合我。因此,我手动签署了APK,并被Google Play控制台接受。在这里https://developer.android.com/studio/publish/app-signing#sign-manually

找到了方向

如何手动签名apk

要手动对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”。

答案 4 :(得分:0)

这些是在flutter中找到了build-tools-pathsdkvesion

答案 5 :(得分:0)

尝试

flutter clean

在任何情况下,只要应用程序显示出一些荒诞的行为,flutter clean命令都非常有用。