为什么android地图是空白的?(无瓷砖)

为什么android地图是空白的?(无瓷砖),android,google-maps,google-api,google-maps-android-api-2,android-logcat,Android,Google Maps,Google Api,Google Maps Android Api 2,Android Logcat,我正试图让谷歌地图在我的签名发布版本中工作。它不显示任何网格线或平铺,只是空白,顶部显示我的UI。映射使用调试构建完美加载 Android studio monitor(logcat)在我使用新手机(4.4.2 vs 4.4.4)时也停止工作,所以我无法过滤信息 我重新启动了我的电脑 我已将API密钥添加到AndroidManifest.xml中 我已尝试创建新的密钥/密钥库三次 我每次都在Google开发者控制台(console.developers.Google.com)中更新了SHA1/

我正试图让谷歌地图在我的签名发布版本中工作。它不显示任何网格线或平铺,只是空白,顶部显示我的UI。映射使用调试构建完美加载

Android studio monitor(logcat)在我使用新手机(4.4.2 vs 4.4.4)时也停止工作,所以我无法过滤信息

  • 我重新启动了我的电脑
  • 我已将API密钥添加到AndroidManifest.xml中
  • 我已尝试创建新的密钥/密钥库三次
  • 我每次都在Google开发者控制台(console.developers.Google.com)中更新了SHA1/包名
  • 我曾经尝试在控制台中重新生成API密钥
(当我从控制台删除调试凭据时,只有缓存的映射才会加载,因此我知道控制台是有响应的)

build.gradle(项目)

gradle.build(应用程序)


这是谷歌地图的关键问题。所以启用android的谷歌地图api。参考使用并在清单文件中提及以下元标记

 <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="key" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

调试SHA-1证书指纹将不同于生产(签名)SHA-1证书指纹,因此您需要为同一个包设置调试SHA-1指纹和生产(签名)密钥库SHA-1指纹

要获取密钥库SHA-1指纹,可以使用以下命令

keytool -list -v -keystore mystore.keystore 

从终端转到密钥库的位置,并用生成的密钥库替换mystore.keystore。并在google开发者控制台中为同一软件包设置生产(签名)密钥库SHA-1指纹

您需要为
debug
release
版本显式设置密钥库。然后,您需要确保googleapi期望该密钥库具有
SHA-1
指纹

signingConfigs {
    release {
        storeFile new File(project.projectDir, 'my_key.keystore')
        storePassword 'myKeystorePassword'
        keyAlias 'myAlias'
        keyPassword 'myPassword'
    }
}

defaultConfig {
}

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
    debug {
        signingConfig signingConfigs.release
    }
}

所有答案都是合法的,但是我的问题是因为没有将API密钥放入发布版google\u maps\u API.xml文件中。只是在调试文件中

可能您有两个google_maps_api.xml文件,一个在app/src/debug/res/values文件夹中,另一个在app/src/release/res/values文件夹中,但只有调试文件包含您的api密钥


请发布您的
build.gradle
,因为这可能是一个签名或包名问题。还有,当它尝试加载时,
logcat
会说什么?好的,我发布了它。自从我开始使用新手机以来,Android studio logcat不再输出任何消息。我在同一天早些时候使用了另一部手机。@jbirdle.gradle中的软件包名称与控制台中的软件包名称相匹配。请告诉我是否面临任何问题?:??:W/?(?):原因:android.view.InflateException:二进制XML文件我遇到以下错误:java.lang.RuntimeException:API密钥只能指定一次。建议您在AndroidManifest.xmlI的元素中使用名为com.google.android.geo.API_KEY的元数据标记,将“geo.API_KEY”替换为“maps.v2.API_KEY”,并且没有任何更改。映射仍然是空的。我可以在生成apk时通过选择“调试”而不是“发布”来构建apk并发送给朋友。但这并不能解决为什么我的发布版本不起作用。这应该在build.gradle(项目)或build.gradle(应用)中吗?@baconcheese113,这应该在你的
app/build.gradle
中。好的,我试着添加了它。对于我的发布版本,它仍然是空的。此外,调试版本仍然使用此配置加载新映射。请参阅上面的build.gradle文件,然后您需要检查您的密钥库
SHA-1
哈希和包名在Google开发者控制台中是否正确。它们是正确的,我已经尝试过多次用新的密钥/密钥库/SHA1组合替换它们。不久前,我确实收到一个无关的错误,说SDK_HOME丢失了或是什么。这就是我提到的,我做了3次以上,每次我都创建了一个新的密钥/密钥库
keytool -list -v -keystore mystore.keystore 
signingConfigs {
    release {
        storeFile new File(project.projectDir, 'my_key.keystore')
        storePassword 'myKeystorePassword'
        keyAlias 'myAlias'
        keyPassword 'myPassword'
    }
}

defaultConfig {
}

buildTypes {
    release {
        signingConfig signingConfigs.release
    }
    debug {
        signingConfig signingConfigs.release
    }
}