首页 文章

Android谷歌 Map 没有显示实际的 Map

提问于
浏览
0

一点背景:

几个星期前,我正在用Android谷歌 Map api做一些事情,一周前我不得不重置我的电脑,之后我从我的私人存储库克隆了我的Android项目 . 现在,谷歌 Map 部分项目将无法正常工作,当我启动 Map 活动时,它会按预期显示布局,但 Map 未呈现,我只在左下角看到Google徽标 .

我检查了以下内容:

  • 我有一个AIzaSyA形式的开发者控制台API KEY *****************

  • API KEY凭据用于包co.com.something.activities和由自动生成的google_maps_api.xml提供的SHA1证书

您还可以使用以下行将凭据添加到现有密钥:D6:76:DA:B5:##:##:##:##:##:##:##:##:##: ##:##:##:##; co.com.something.activities

  • 我在我的清单中
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

        <uses-feature android:glEsVersion="0x00020000" android:required="true" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="@string/google_maps_key" />
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
  • google_maps_api.xml上的API KEY与控制台API KEY相同

  • onMapReady(GoogleMap googleMap)方法在我的活动中被调用,我正在设置一些LatLng点并移动相机(仍然不会显示 Map )

  • 我尝试了Android Studio中的以下操作:构建APK,生成签名APK,然后将这些apks上传到我的手机(无效) .

  • 我已经在应用程序的项目文件夹下发布了我的密钥库,我删除了它并创建了它并使用新的SHA1重新创建了API KEY

  • 我没有触及debug.keystore,因为我不知道它位于何处 .

  • 我正在将 Map 加载到活动的片段中(它工作正常)

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:map="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
        android:layout_height="fill_parent" android:id="@+id/map"
        tools:context="co.com.wayfit.activities.RouteActivity"
        android:name="com.google.android.gms.maps.SupportMapFragment" />

这是我的gradle文件

android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
signingConfigs {
    release {
        storeFile file('C:/ProjectDir/app/wayfit.keystore')
        storePassword "wayfit"
        keyAlias "wayfit"
        keyPassword "wayfit"
    }
}
defaultConfig {
    applicationId "co.com.wayfit"
    minSdkVersion 15
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
    signingConfig signingConfigs.release
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}
productFlavors {
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.google.android.gms:play-services-ads:8.3.0'
    compile 'com.google.android.gms:play-services-identity:8.3.0'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
}

编辑:

我认为我的问题是由于API KEY . 我尝试删除活动并创建一个新的 Map 活动,android studio为我生成了一个名为google_maps_api.xml的文件,它说你还可以使用以下行将你的凭据添加到现有密钥:D6:76:DA:B5:# #:##:##:##:##:##:##:##:##:##:##:##:##; co.com.something.activities

所以我想把它用于我的api凭证,但是当我运行命令提示符“keytool -v -list -keystore mykeystore.keystore”时,我正在使用它来签署apk,我收到了另一个不同的SHA1

D8:B2:29:2C:C5:##:##:##:##:##:##:##:##

我在开发人员控制台上的相同包下使用了相同的API KEY .

另一个让我感到困惑的是google_maps_api.xml在名称的右侧说(调试),这会影响某些东西吗?

2 回答

  • 1
    • 检查您的设备的日期和时间设置是否与您当前的时区相对应(不幸的是,日志输出不会返回很多建设性信息,以引导您考虑日期和时间)

    • 检查您是否在API控制台中启用了正确的服务(如果您对此步骤执行了错误,则启用Google Maps API Android V2而非Google Maps API V2,日志将返回身份验证失败)

    • 检查您是否使用了正确的密钥库来获取API密码(日志会给您一个提示,说明身份验证失败

    • 检查是否包含了正确的库文件

    有关空白谷歌 Map 的大量其他问题可以找到更多信息:https://stackoverflow.com/a/15636254/1099716

  • 0

    debug 的API_KEY存储在app \ src \ debug \ res \ values \ google_maps_api.xml中

    将文件夹app \ src \ release \ res \ values的 release 的API_KEY放到google_maps_api.xml文件中,对我来说就像我提到的这个答案一样..

    https://stackoverflow.com/a/42123330/2796625

相关问题