Android 谷歌地图突然不起作用了
突然间,“地图”在我的应用程序中停止工作,只在左下角显示一个带有谷歌标志的空白屏幕 我得到的错误是:Android 谷歌地图突然不起作用了,android,google-maps,android-studio,google-maps-android-api-2,Android,Google Maps,Android Studio,Google Maps Android Api 2,突然间,“地图”在我的应用程序中停止工作,只在左下角显示一个带有谷歌标志的空白屏幕 我得到的错误是: 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/Go
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).
我认为唯一可能的是身份验证错误。因为我在不同的网络上试过,没有遇到任何问题
问题可能出在build.gradle文件上吗?因为问题是在我在那里捣乱之后开始的,我想
这是我的身材gradle:
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')
}
清单如下所示:
<?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>
我遇到了完全相同的问题,解决方案根本不明显。检查您是否未使用以下选项更改DefaultSSLSocketFactory:
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
删除这一行并为所需的连接设置套接字工厂使我的地图工作。这是否发生在sign(调试和发布)上?@betorcs是的,即使我将调试添加到google api面板中,也无法处理其中任何一个。我在某个地方读到它可能是proguard错误配置的,尝试禁用它runProguard false
我可以重现此错误。它看起来应用缓存你的api_键,我需要干净的数据或卸载现有的应用,只是覆盖是不够的。我有同样的问题。我完全可以重新开始。这解决了我的问题。非常感谢你!你怎么知道的?几乎是偶然的。在调试和挖掘项目的过程中,我发现了谷歌用于身份验证的https地址,而在该项目中,地图不起作用。我想到了检查连接属性的想法,这是一个很好的尝试。您能提供详细信息吗?代码在哪里?“HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());”它在我的类中负责HTTPS连接。在创建连接套接字之前。请您用代码示例进行更好的解释,以更正此问题?由于我的连接处理,我的映射无法工作,我已经对它进行了测试,但我不知道如何仅为我自己的服务器的连接保留SSL