一点背景:
几个星期前,我用Android谷歌地图api做了一些事情,一周前我不得不重置我的电脑,之后我从我的私人存储库克隆了我的Android项目。现在,谷歌地图部分项目无法正常工作,当我开始地图活动时,它会按预期显示布局,但地图未呈现,我只看到左下角的Google徽标。
我检查过以下内容:
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" />
&#13;
google_maps_api.xml上的API KEY与控制台API KEY相同
onMapReady(GoogleMap googleMap)方法在我的活动中被调用,我设置了一些LatLng点并移动了相机(仍然不会显示地图)
我已经尝试了Android Studio中的以下操作:构建APK,生成签名APK,然后将这些apks上传到我的手机(无效)。
我在应用程序的项目文件夹下有我要发布的密钥库,我删除了它并创建了它并使用新的SHA1重新创建了API KEY
我还没有触及debug.keystore,因为我不知道它位于何处。
我将地图加载到活动的片段中(工作正常)
<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" />
&#13;
这是我的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引起的。我尝试删除活动并创建一个新的地图活动,android studio为我生成了一个名为google_maps_api.xml的文件,它说 您还可以使用以下行将您的凭据添加到现有密钥: D6:76:DA:B5:##:##:##:##:##:##:##:##:##:##:##:##:##; co.com .something.activities
所以我想把它用于我的api凭证,但是当我运行命令提示符&#34; keytool -v -list -keystore mykeystore.keystore&#34;这与我用来签署apk相同,我接收另一个不同的SHA1
D8:B2:29:2C:C5:##:##:##:##:##:##:##:##
我在开发人员控制台上的相同软件包下使用了相同的API KEY。
让我感到困惑的另一件事是google_maps_api.xml在名称的右侧说(调试),这是否会影响某些内容?
答案 0 :(得分:1)
有关空白谷歌地图的大量其他问题可以找到更多信息: https://stackoverflow.com/a/15636254/1099716
答案 1 :(得分:0)
调试的API_KEY存储在app \ src \ debug \ res \ values \ google_maps_api.xml
通过文件夹app \ src \ release \ res \ values将发布的API_KEY放到google_maps_api.xml文件中对我来说非常有用,如上所述: