在使用google地图的时候, 从公司的svn上面检出一个几年前的老项目, 里面带有Google地图功能, 运行后发现地图始终不显示, 检查项目中也有地图API凭证, 也没有发现其他异常, 百思不得其解后, 在平台上重新申请了一个API凭证,启用API服务, 然后静待5分钟, 然并卵, 依旧没有地图, 然后查看Log日志, 发现了这个惊人的一幕:
主要log日志如下:
Maps Android API: In the Google Developer Console (https://console.developers.google.com)
Ensure that the “Google Maps Android API v2” is enabled.
Ensure that the following Android Key exists:
API Key: AIzaSyDL0iIX1M3wx2tdNI6mAM07VXXXXXXX
Android Application (<cert_fingerprint>;<package_name>): F8:16:22:E7:32:45:7C:08:AA:34:B1:6B:F9:3D:XX:XX:XX:XX;com.fw.xxx.xxx
看下这个翻译:
地图Android API:在Google开发者控制台(https://Console.developers.Google.com)中
确保启用了“Google Maps Android API v2”。
确保下面的Android密钥存在:
API密钥:AIzaSyDL0iIX1M3wx2tdNI6mAM07VXXXXXXX
Android应用程序(<cert_fingerprint>;<package_name>):F8:16:22:E7:32:45:7C:08:AA:34:B1:6B:F9:3D:XX:XX:XX:XX;com.fw.xxx.xxx
翻译中出来要保证google平台上的秘钥是: AIzaSyDL0iIX1M3wx2tdNI6mAM07VXXXXXXX ,
SHA1签名是: F8:16:22:E7:32:45:7C:08:AA:34:B1:6B:F9:3D:XX:XX:XX:XX
包名是:com.fw.xxx.xxx
总结: 只要保证平台翻译的上3个一致就能显示出地图了, 之所以没有显示出地图来, 项目的正式版SHA1签名与提示的API秘钥不一样, 所以将SHA1替换掉, OK, 地图展示出来, 而产生这个签名不一致的问题, 应该就是客户在将应用上传到应用市场的时候, 其中有一个选项是使用平台的签名, 可能客户把这个勾选上了, 导致, 实际的应用签名不一致.