【问题标题】:Google Fit Credentials: works on Production, not on DevelopmentGoogle Fit 凭证:适用于生产,而非开发
【发布时间】:2017-03-15 18:19:16
【问题描述】:

目标

我正在开发一款适用于 Google Fit 的应用,但由于某种原因,我无法让它们同时使用这两个版本。

在再次重新创建凭据之前,情况正好相反:开发工作正常,生产不工作。

凭据和 Google Api

我启用了 Api 并添加了凭据:

Google Api website

密钥库

生成的 KetStore 包含 2 个密钥,一个用于生产,另一个用于开发。在 Credentials 页面中根据其包名称设置了每一个(请参阅 Android 应用程序)。

Terminal dump of KeyStore

安卓应用

我们的应用有 2 个不同的包名:

  • xxx.yyy.app 用于生产
  • xxx.yyy.development 用于开发

这是通过 Gradle 配置使用风味实现的。这样,我们就有 2 个移动应用程序用于测试目的。

问题

我不知道发生了什么冲突,导致我无法让它们同时工作。

我只有 1 个同时工作,而一个不工作的在 LogCat 上得到 CANCELLED 结果。

可能具有相同的包前缀 (xxx.yyy.) 是一个问题,因此读取了错误的凭据?

感谢任何建议。 谢谢。

【问题讨论】:

  • 我想使用相同的包前缀没有问题,因为包名称应该基于您控制或有权使用的域名。请参阅here。您遇到的错误 CANCELLED 意味着您使用了错误的 debug.keystore。这是一个相关的thread,可能会有所帮助。

标签: android authentication oauth-2.0 google-api google-fit


【解决方案1】:

原来Android Studio 在编译APK 时并没有使用我的keystore。它仍在使用默认的debug.keystore,别名为AndroidDebugKeyandroid 密码。

由于某种原因,它没有读取我针对development 环境的签名配置,而是针对production

为了检查每个 Build Variant 的签名是什么:

  • 打开一个项目

  • 打开右侧的Gradle标签

  • 展开 your_project> ==> 任务 ==> Android

  • 双击singingReport(这将创建一个Gradle类型Run/Debug Configuration

  • 打开位于右下角的Gradle Console

此时您应该会看到其中的一些:

Variant: developmentDebug
Config: debug
Store: /Users/<username>/.android/debug.keystore
Alias: AndroidDebugKey
MD5: YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Valid until: <date>

确保每个变体的SHA1Credentials 页面中指定的相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2016-06-16
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多