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

Why is android map blank? (No tiles)

我正在尝试让 Google 地图 在我的 签名版本构建 中工作。它不显示任何网格线或图块,它只是 空白 ,我的 UI 显示在顶部。地图 使用 调试版本 完美加载

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

(当我从控制台删除调试凭据时,只有缓存的地图会加载,所以我知道控制台有响应)

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 指纹

您需要为 debugrelease 构建显式设置密钥库。然后您需要确保 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.