为什么 android 地图是空白的? (没有瓷砖)
Why is android map blank? (No tiles)
我正在尝试让 Google 地图 在我的 签名版本构建 中工作。它不显示任何网格线或图块,它只是 空白 ,我的 UI 显示在顶部。地图 使用 调试版本 完美加载。
Android studio monitor (logcat) 在我使用新的 phone(4.4.2 vs 4.4.4) 时也停止工作,所以我无法过滤信息。
- 我已经重启了我的电脑
- 我已将 API 键添加到 AndroidManifest.xml
- 我已经尝试 创建新的 key/keystores 3 次
- 我已经 更新 SHA1/Google 开发者控制台中的软件包名称 (console.developers.google.com)每次
- 我试过一次在控制台中重新生成 API 密钥
(当我从控制台删除调试凭据时,只有缓存的地图会加载,所以我知道控制台有响应)
build.gradle(项目)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
gradle.build(应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
signingConfigs {
release {
storeFile new File(project.projectDir, 'mykeystore.keystore')
storePassword 'pass'
keyAlias 'mykey'
keyPassword 'pass'
}
}
defaultConfig {
applicationId "apps.baconcheesegames.com.real_timesocialrunnerfinder"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.google.android.gms:play-services-ads:8.1.0'
compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-gcm:8.1.0'
}
这是 google 地图键问题。因此,为 android 启用 google 映射 api。参考使用 this 并在清单文件
中提及以下元标记
<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 指纹。
要获取 Keystore SHA-1 指纹,您可以使用以下命令
keytool -list -v -keystore mystore.keystore
从终端转到您的密钥库的位置,并将 mystore.keystore 替换为您生成的密钥库。并在 google 开发人员控制台
中为同一包设置生产(签名)密钥库 SHA-1 指纹
您需要为 debug
和 release
构建显式设置密钥库。然后您需要确保 google api 期望该密钥库的 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 密钥放入 release google_maps_api.xml 文件。就在 debug 文件中。
Maybe you have two google_maps_api.xml files, one in the app/src/debug/res/values folder and the other in the app/src/release/res/values folder, but only the debug one contains your API key.
我正在尝试让 Google 地图 在我的 签名版本构建 中工作。它不显示任何网格线或图块,它只是 空白 ,我的 UI 显示在顶部。地图 使用 调试版本 完美加载。
Android studio monitor (logcat) 在我使用新的 phone(4.4.2 vs 4.4.4) 时也停止工作,所以我无法过滤信息。
- 我已经重启了我的电脑
- 我已将 API 键添加到 AndroidManifest.xml
- 我已经尝试 创建新的 key/keystores 3 次
- 我已经 更新 SHA1/Google 开发者控制台中的软件包名称 (console.developers.google.com)每次
- 我试过一次在控制台中重新生成 API 密钥
(当我从控制台删除调试凭据时,只有缓存的地图会加载,所以我知道控制台有响应)
build.gradle(项目)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
gradle.build(应用程序)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
signingConfigs {
release {
storeFile new File(project.projectDir, 'mykeystore.keystore')
storePassword 'pass'
keyAlias 'mykey'
keyPassword 'pass'
}
}
defaultConfig {
applicationId "apps.baconcheesegames.com.real_timesocialrunnerfinder"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.google.android.gms:play-services:8.1.0'
compile 'com.google.android.gms:play-services-ads:8.1.0'
compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-gcm:8.1.0'
}
这是 google 地图键问题。因此,为 android 启用 google 映射 api。参考使用 this 并在清单文件
中提及以下元标记 <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 指纹。
要获取 Keystore SHA-1 指纹,您可以使用以下命令
keytool -list -v -keystore mystore.keystore
从终端转到您的密钥库的位置,并将 mystore.keystore 替换为您生成的密钥库。并在 google 开发人员控制台
中为同一包设置生产(签名)密钥库 SHA-1 指纹您需要为 debug
和 release
构建显式设置密钥库。然后您需要确保 google api 期望该密钥库的 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 密钥放入 release google_maps_api.xml 文件。就在 debug 文件中。
Maybe you have two google_maps_api.xml files, one in the app/src/debug/res/values folder and the other in the app/src/release/res/values folder, but only the debug one contains your API key.