【问题标题】:Why is android map blank? (No tiles)为什么android地图是空白的? (没有瓷砖)
【发布时间】:2015-10-21 01:00:57
【问题描述】:

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

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

  • 我已重新启动计算机
  • 我已将 API 密钥添加到 AndroidManifest.xml
  • 我已尝试创建新的密钥/密钥库 3 次
  • 我每次都更新 Google 开发者控制台 (console.developers.google.com) 中的 SHA1/包名称
  • 我曾尝试在控制台中重新生成 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(app)

     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'
}

【问题讨论】:

  • 请发布您的build.gradle,因为它可能是签名或包名称问题。还有logcat 在尝试加载时会说什么?
  • 好的,我贴出来了。自从我开始使用新手机以来,Android studio logcat 不再输出任何消息。我在同一天早些时候用另一部手机工作过。
  • @JBirdVegas build.gradle 中的包名与控制台中的包名匹配

标签: android google-maps google-api google-maps-android-api-2 android-logcat


【解决方案1】:

这是谷歌地图的关键问题。所以启用 google map api for android .For refedrence 使用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" />

【讨论】:

  • 如果遇到任何问题,请告诉我
  • ?:??: W/?(?): Caused by: android.view.InflateException: Binary XML file 我得到了这个错误:java.lang.RuntimeException: API key 只能被指定一次。建议您在 AndroidManifest.xml 的 元素中使用元数据标签,名称为:com.google.android.geo.API_KEY
  • 我用“maps.v2.API_KEY”替换了“geo.API_KEY”,没有任何改变。地图还是空白。
  • 在生成 Apk 时,我可以通过选择“调试”而不是“发布”来构建 apk 并将其发送给朋友。这并不能解决为什么我的 Release 版本不起作用。
【解决方案2】:

您需要为 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
    }
}

【讨论】:

  • 这个应该在 build.gradle (project) 还是 build.gradle(app) 中?
  • @baconcheese113,这将在您的app/build.gradle
  • 好的,我尝试添加它。我的发布版本仍然是空白的。此外,调试版本仍会使用此配置加载新地图。见上面的 build.gradle 文件
  • 那么您需要在 Google Developer Console 中检查您的密钥库 SHA-1 哈希和包名是否正确。
  • 它们是正确的,我已经尝试用新的密钥/密钥库/SHA1 组合多次替换它们。我确实收到了一个不相关的错误,说 SDK_HOME 丢失或不久前发生的事情。
【解决方案3】:

所有答案都是合法的,但是我的问题是由于没有将 API 密钥放在 release google_maps_api.xml 文件中。就在 debug 文件中。

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

https://stackoverflow.com/a/32170277/1363772

【讨论】:

    【解决方案4】:

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

    要获取 Keystore SHA-1 指纹,您可以使用以下命令

    keytool -list -v -keystore mystore.keystore 
    

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

    【讨论】:

    • 这是我提到的,我做了 3 次以上,每次我创建一个新的密钥/密钥库
    猜你喜欢
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多