2

我已经按照此处此处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 帐户来创建单独的密钥?

4

2 回答 2

3

引用 Google API 控制台:

API 请求会从您客户的 Android 设备直接发送到 Google。Google 会验证每个请求是否来自与下面列出的证书 SHA1 指纹和包名称之一匹配的 Android 应用程序。您可以使用以下命令发现您的开发人员证书的 SHA1 指纹[...]

每行一个 SHA1 证书指纹和包名称(用分号分隔)。

在此处每行突出显示一个。

Google Maps API 密钥的屏幕截图 - 配置 Android 密钥`

对于您构建应用程序的每台笔记本电脑,您必须生成一个 SHA1 指纹并将其添加到 API 控制台中。

于 2013-02-06T13:19:40.057 回答
2

您在这里有两个选择。

  1. 为您拥有的每台设备的 api 密钥添加单独的一行。

  2. 将 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 - 现在每个项目成员都可以使用自己的密钥覆盖。

于 2013-02-06T18:03:34.347 回答