谷歌地图突然不工作突然、地图、工作

由网友(相忘于江湖)分享简介:突然停止映射在我的应用程序的工作,只是显示了与谷歌标志的左下角空白屏幕。 All of a sudden maps stopped working in my app and just shows a blank screen with the google logo in the bottom left corne...

突然停止映射在我的应用程序的工作,只是显示了与谷歌标志的左下角空白屏幕。

All of a sudden maps stopped working in my app and just shows a blank screen with the google logo in the bottom left corner.

我得到的错误是:

I/Google Maps Android API﹕ Google Play services package version: 4452038
I/ActivityManager﹕ Start proc com.google.android.gms.maps for service com.google.android.gms/.maps.auth.ApiTokenService: 
I/Google Maps Android API﹕ Google Play services client version: 4452000
I/Google Maps Android API﹕ Failed to contact Google servers. Another attempt will be made when connectivity is established.
E/Google Maps Android API﹕ Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

唯一想我相信有可能是一个身份验证错误。既然我已经尝试了不同的网络,没有烦恼那里。

The only think I believe is possible is an authentication error. Since I've tried on different networks and have not troubles there.

难道这个问题与该build.gradle文件?因为这些问题开始后,我把事情搞糟围在那里,我想。

Could the problem be with the build.gradle file? Because the problems started after I messed around there, i think.

这是我的构建摇篮:

apply plugin: 'android'

android {
compileSdkVersion 19
buildToolsVersion "19.0.3"

def versionPropsFile = file('version.properties')

if (versionPropsFile.canRead()) {
    def Properties versionProps = new Properties()

    versionProps.load(new FileInputStream(versionPropsFile))

    def value = 0

    def runTasks = gradle.startParameter.taskNames
    if ('assemble' in runTasks || 'assembleRelease' in runTasks || 'aR' in runTasks) {
        value = 1;
    }

    def versionMajor = 1
    def versionMinor = 3
    def versionPatch = versionProps['VERSION_PATCH'].toInteger() + value
    def versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
    def version_Code = versionProps['VERSION_CODE'].toInteger() + value

    versionProps['VERSION_PATCH'] = versionPatch.toString()
    versionProps['VERSION_BUILD'] = versionBuild.toString()
    versionProps['VERSION_CODE'] = version_Code.toString()

    versionProps.store(versionPropsFile.newWriter(), null)

    defaultConfig {
        versionCode version_Code
        versionName "${versionMajor}.${versionMinor}.${versionPatch} (${versionBuild})"
        minSdkVersion 14
        targetSdkVersion 19
    }
} else {
    throw new GradleException("Could not read version.properties!")
}

signingConfigs {
    debug {
        storeFile file("xxx.keystore")
        storePassword "xxxx"
        keyAlias "debug"
        keyPassword "xxxx"
    }
    releaseKey {
        storeFile file("xxx.keystore")
        storePassword "xxxx"
        keyAlias "release"
        keyPassword "xxxx"
    }
}

buildTypes {
    debug {
        debuggable true
        packageNameSuffix ".debug"
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.debug
    }

    release {
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.releaseKey
    }
}

lintOptions {
    abortOnError false
}
}

dependencies {
    compile project(':nineOldAndroids')
    compile project(':expListViewLib')
    compile project(':datetimepickerlibrary')
    compile project(':volley')
    compile 'com.android.support:support-v4:+'
    compile 'com.google.android.gms:play-services:+'
    compile files('libs/aws-android-sdk-1.7.1.1.jar')
    compile files('libs/disklrucache-2.0.1.jar')
}

清单如下所示:

the manifest looks like the following:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app" >

<permission
    android:name="com.example.app.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="com.example.app.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<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-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.VIBRATE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    ...

    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="@string/config_com.google.android.maps.v2.api_key" />
</application>
</manifest>

我已经多次检出了的packageName,SHA1指纹和API是正确的。他们都是,但我仍然得到一个空的地图。

I have checked multiple times that packageName, sha1 fingerprint and API is correct. All of them are, but I still get an empty map.

我已经看到了类似的问题在那里,但没有一个解决方案,我发现。它只是拒绝为我工作。

I've seen similar questions out there but none of the solutions I found. It just refuses to work for me.

有什么建议?

编辑: 没有什么,我已经试过的作品。但我没有找到人似乎有同样的问题谁一个类似的问题:Google地图Android的API授权失效 - 在过去的几个月里这种服务改变

Nothing that I have tried works. But I did find a similar question with someone who seems to have the same problem: Google Maps Android API Authorization failure - has this service changed in the last few months?

推荐答案

我有完全一样的问题和解决方案是不明显的。检查如果你不改变DefaultSSLSocketFactory有:

I had exactly the same problem and the solution was not obvious at all. Check if you are not changing DefaultSSLSocketFactory with:

HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

删除这条线,并设置套接字工厂只为需要的连接使我的地图的工作。

Removing this line and setting socket factory just for the required connection made my maps work.

阅读全文

相关推荐

最新文章