无法在发行版中激活 Google Maps API v2

Posted

技术标签:

【中文标题】无法在发行版中激活 Google Maps API v2【英文标题】:Couldn't activate Google Maps API v2 in release version 【发布时间】:2019-03-28 19:43:02 【问题描述】:

我无法在我的发布版本中激活我的 Google Maps v2 android API :(

我的调试版本工作正常。我在封闭的测试频道中发布了我的应用 (Android APP BUNDLE),我在 logcat 中收到以下错误:

2018-10-24 13:21:50.255 6704-6769/? E/Google Maps Android API:授权失败。请参阅https://developers.google.com/maps/documentation/android-api/start了解如何正确设置地图。

2018-10-24 13:21:50.257 6704-6769/? E/Google Maps Android API:在 Google 开发者控制台中 (https://console.developers.google.com)

确保“Google Maps Android API v2”已启用。

确保以下 Android Key 存在:

API 密钥:YOUR_KEY_HERE

Android 应用程序 (cert_fingerprint>;package_name>): 74:4E:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:05 :2A;com.soft.test

这是我的“.../main/res/values/google_maps_api.xml”:

<resources>

    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXM1mI</string>

</resources>

我的 API 控制台中有以下指纹:

我的 build.gradle(模块:app):

apply plugin: 'com.android.application'

android 
    compileSdkVersion 27
    defaultConfig 
        applicationId "com.soft.test"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "@string/version"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        
        debug 
            testCoverageEnabled true
        
    


dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.google.android.gms:play-services-maps:16.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'


    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.android.support:design:27.1.1'

我已经解决这个问题好几天了。搜索网页,阅读 *** 答案,将测试版本上传到 google play 但找不到任何解决方案:(

我有三个主要问题:

    我的 google_maps_api.xml 中有 API KEY,但 logcat 错误仍然显示“API Key:YOUR_KEY_HERE”,看起来应用程序看不到 API_KEY。为什么? (我认为这可能是我问题的主要解决方案)

    在 logcat 错误和“keytool -list -v -keystore mystore.keystore”命令输出中,我得到了两个不同的指纹?这怎么可能? (我确定我在真正的密钥库上运行命令)

    主要问题:我或 Google 出了什么问题?如何激活发布版本的 MAP API?

【问题讨论】:

您是否替换了清单中的 API_KEY? 您是否从 google play 控制台启用了 Maps SDK for Android APl @IntelliJAmiya,不,我没有。我必须在哪里写它?但是调试版本可以正常工作。 卸载应用再运行会出现同样的问题? @IntelliJAmiya,是的。卸载、安装、关闭手机。使用不同的包名称重新发布。我遇到了同样的问题:( 【参考方案1】:

我找到了错误和解决方案。

首先,我将 API KEY 硬编码到清单文件中,并且它起作用了。然后我意识到,发布目录中没有 google_maps_api.xml 文件。

我手动添加了 google_maps_api.xml 文件来发布目录。不幸的是,在 Android 视图中仍然看不到 google_maps_api.xml 文件的发布版本:

但是,Android Studio 生成了带有发布目录文件的 App Bundle。我在 Google Play 中发布了一个正常工作的版本:PETAROUND。 :)

我认为 Android Studio 中存在错误。我在 macOS 10.13.6 HighSierra 上使用 Android Studio Build:3.2.1。现在,我正在寻找和搜索这个错误。如果我找到任何关于错误的答案,我会在这里写出来。

【讨论】:

以上是关于无法在发行版中激活 Google Maps API v2的主要内容,如果未能解决你的问题,请参考以下文章

Error:(16, 16) 警告: BASE64Decoder是内部专用 API, 可能会在未来发行版中删除

Flutter Firebase GoogleSignIn 在发行版中不起作用

在 Jest 测试之前无法加载 Google Maps API

无法运行 Google Maps Android API Utility Demo

由于运行时问题,Google Maps API 无法在 API 23 以上运行

Google maps API V3 - 无法对 AutocompleteService 预测进行地理编码