我已按照here和here步骤在我们的团队项目中创建MapView
,我们与svn同步。按照步骤操作后,MapView
运行顺畅,但只能在我的笔记本电脑上运行。我的项目成员总是得到
02-06 13:27:37.327: E/Google Maps Android API(19490): Authorization failure.
打开MapView
时。所以我删除了旧版本,并使用我的Google帐户在另一台笔记本电脑上为新的Google API密钥生成了新的SHA1指纹:
keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android -v
所以现在它正在我生成SHA1指纹的另一台笔记本电脑上工作,但是当我尝试在我的笔记本电脑上运行项目时,我现在正在使用
02-06 13:29:51.280: E/Google Maps Android API(20262): Authorization failure.
错误。
我们没有使用proguard-project.txt
,我们尝试了安装了google-play-services
的不同设备,并将/extras/google/google_play_services/libproject/google-play-services_lib
作为库包含在内。我们还尝试生成多个API密钥,但只有一个正在运行。
我们做错了什么?我们是否必须使用不同的Google帐户来创建个人密钥?
答案 0 :(得分:3)
引用Google API控制台:
API请求会从您客户的Android直接发送给Google 设备。 Google会验证每个请求是否来自Android 与证书SHA1指纹之一匹配的应用程序 包名称如下。你可以发现SHA1的指纹 您的开发人员证书使用以下命令[...]
一个SHA1证书指纹和包名称(以分号分隔) 每行。
此处点亮每行一个。
`
对于构建应用程序的每台笔记本电脑,您必须生成SHA1指纹并将其添加到API控制台中。
答案 1 :(得分:2)
这里有两个选择。
为每个设备的api密钥添加一个单独的行。
将api密钥解压缩到文件(例如map_key.xml
)并从AndroidManifest.xml
引用此文件。
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key_v2" />
将此文件添加到.gitignore中 - 现在每个项目成员都可以使用自己的密钥覆盖。