使用Flutter构建应用程序集时

时间:2019-10-02 02:21:06

标签: flutter firebase-authentication google-signin android-app-bundle googlesigninapi

我正在使用firebase_authgoogle_sign_in构建Flutter应用。

一切都运行了一段时间,并且我发布的产品上的所有现有用户都没有遇到任何问题,但是不久前,我开始收到有关新用户无法登录的报告。直到报告开始累积为止。我发现他们在标题中发现了错误。我花了很多时间调查...

对于该问题,我已经遍历了所有其他StackOverflow条目:

  1. Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
  2. PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
  3. Exception has occurred. PlatformException (PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null))
  4. Flutter: Firebase: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
  5. Flutter: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
  6. Flutter and google_sign_in plugin: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
  7. com.google.android.gms.common.api.ApiException: 10:
  8. com.google.android.gms.common.api.ApiException: 10
  9. How to correct " com.google.android.gms.common.api.ApiException: 10: "
  10. Firebase Google Signin error: com.google.android.gms.common.api.ApiException: 10
  11. Google sign in failed com.google.android.gms.common.api.ApiException: 10:
  12. Why do I get com.google.android.gms.common.api.ApiException: 10:?
  13. Error with Google_sign_in plugin in flutter

我已经尝试了所有解决方案:

  • Generated debug key
  • Firebase site上输入了SHA1调试密钥
  • 验证我的电子邮件已在Firebase网站上输入。
  • 下载了google-services.json文件并将其放在android/app/目录中
  • 使用flutter build appbundle --debug来构建Flutter应用
  • PlatformException(sign_in_failed,com.google.android.gms.common.api.ApiException:10:,null)

所以我也尝试过:

  • 仅使用Firebase网站上的发布密钥并使用flutter build appbundle --release
  • 构建
  • 同时具有释放键和调试键
  • 对于上述每个组合均使用SHA256
  • 对于每种组合,我都可以确保flutter clean并将google-services.json文件替换为更新的

  • 确认android/build.gradleandroid/app/build.gradleconfigured properly

  • 确认在Firebase网站上启用了“登录方式”作为“登录方式”
  • 我什至用我的应用名称,徽标,电子邮件,主页,隐私和服务条款链接填写了OAuth consent screen,并保存了

以下是我运行的版本:

  google_sign_in: ^4.0.7
  firebase_auth: ^0.14.0+5

android / app / build.gradle的相关部分:

dependencies {
    implementation "androidx.appcompat:appcompat:1.1.0-alpha01"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    implementation 'com.google.firebase:firebase-analytics:17.2.0'
    implementation "com.google.android.gms:play-services-auth:16.0.1"
    implementation "com.google.android.gms:play-services-identity:16.0.0"
    implementation "com.android.support:support-v4:28.0"
}

apply plugin: 'com.google.gms.google-services' 

android / build.gradle的相关部分:

buildscript {
   ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.2'
    }
}

Flutter Doctor输出:

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.9.1+hotfix.2, on Linux, locale en_US.UTF-8)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.0-rc1)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.38.1)
[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

所有测试都是使用Firebase上的Robo测试实验室在多台设备上完成的(仅查看登录是否成功,而不是测试UI)。


TLDR; 最后,我终于弄清楚了,如果我使用flutter build apk(而不是一个appbundle)来构建apk,它就可以工作。然后我意识到问题开始的时间与Flutter开始建议我生成appbundles而不是apk的同时。

在生成应用程序包时,是否有人能够使用google_sign_in随风飘扬地登录BRAND NEW USER?(请注意,以前登录该应用程序早期版本的现有用户无需问题。)

1 个答案:

答案 0 :(得分:0)

如果您使用内部应用程序共享来测试实际Android设备上的Flutter构建(例如我),则需要添加另一个应用程序签名证书指纹

在Google Play控制台的左侧导航上,进入:开发者工具->内部应用共享

选择应用程序证书标签。应该看起来像这样:

Google Play - Internal App Sharing - Certificate

复制SHA1密钥并将其添加到Firebase控制台->项目设置-> [您的Android应用]-> SHA证书指纹(使用按钮添加指纹)

下载您的更新后的google-services.json 并将其更新/添加到您的项目的android / app文件夹中。

这适用于新用户和现有用户。我使用flutter build appbundle

构建了一个appbundle(不是APK)

Google并未在任何地方对此进行记录,在Flutter社区的其他地方也没有看到这种解决方案。在尝试了您所有引用的链接和其他几个链接之后,我在Google Play控制台中闲逛时遇到了这个解决方案。