经过几个小时后,我找到了答案,加上一个非常重要的答案gotcha!
情况
我需要重新解释一下我不知道哪些细节实际上是最重要的。
我继承了这个项目,所以它的历史不为人知。最初该程序使用的是free版本的谷歌地图,运行良好。由于这是一家大公司,他们继续支付完整的高级订阅服务费用。程序员添加了新的库,并进行了一些代码修改以使用这些库。
但他们仍然使用原来的(免费)授权密钥。这导致谷歌的服务器继续将数据视为免费版本。
没有人注意到这一点,因为免费的 Goole Maps API 仅在一天内进行一定数量(2500?)的 API 调用后才会出现问题。我们的流量最近才变得足够高,这才成为一个问题。 (超过限制后,Google API 会发送错误消息而不是数据。)
因此,我所做的任何更改似乎都没有效果。更改代码中的密钥会导致身份验证错误(参见问题)。
Solution
我必须使用新的高级库和控制台创建新的身份验证密钥。这改变了谷歌服务器,这当然导致该应用程序已经存在的所有版本停止运行!
放置在清单中的新身份验证密钥会被 Google API 识别,一切正常,耶!但我们仍然需要在 Google Store 中发布新版本。
问题#1
文档中列出的 AndroidManifest.xml 命令不工作:
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="AI............................mI"/>
这是实际有效的正确名称:
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AI............................mI" />
陷阱 #2
但在测试时,我仍然遇到各种各样的错误。为什么?因为 Android 设备维护身份验证密钥的缓存。清除数据(或者更好的是卸载)会清除这些缓存。Now一切正常,是的。
道德:在处理 API 密钥、身份验证、证书和anything类似,每次都卸载! :)