我想知道是否有办法检测程序是否在默认(调试)密钥库(从eclipse运行时)或签名密钥库(当发布到Android市场时)运行时
我在我的应用程序中使用Google地图,我想以编程方式更改Maps API密钥以进行测试和发布,因为一个API密钥仅适用于测试或 释放。
必须有办法实现此目的,因为Google地图可以检测用于编译应用程序的密钥库(启用或禁用地图)。
答案 0 :(得分:3)
http://daniel-codes.blogspot.com/2011/04/detecting-keystore-signature-in-code.html
这似乎是识别发布密钥的合适方法
另外
http://whereblogger.klaki.net/2009/10/choosing-android-maps-api-key-at-run.html
另外
答案 1 :(得分:1)
我不知道谷歌地图如何做到这一点,但这里有一个可能的选择:您可以使用包管理器提取用于签署APK的证书,并将其与您已知的版本密钥库进行比较。我建议将它与此而不是调试密钥库进行比较,因为调试存储每年到期;您的发布商店将在相当长的时间内过期(如果您遵循Google的指导原则)。
答案 2 :(得分:0)
调试和发布密钥库的功能相同。调试密钥库由SDK自动生成,但您可以将其替换为您喜欢的任何密钥库(我实际上是在我的几台开发机器上使用相同的调试密钥库)。
因此,在最一般的情况下,发布和调试密钥库之间没有区别。
原因是您可以将发布公钥嵌入到您的应用程序中,并在您的应用程序未使用适当的私人发布密钥签名时检测案例。如果是这样,假设您在调试密钥库签名的应用程序中。但我不能说这是一个理想的解决方案,因为它有一个不太明显的依赖。