以编程方式检测调试密钥库或释放密钥库

问题描述

| 我想知道是否有一种方法可以检测程序是否在认(调试)密钥库(从eclipse运行时)或已签名的密钥库(向Android市场发布时)上运行 我在应用程序中使用了Google Maps,并且我希望通过编程方式更改Maps API密钥以进行测试和发布,因为一个API密钥仅适用于测试或 发布。 由于Google Maps可以检测到使用哪个密钥库来编译应用程序(启用或禁用地图),因此必须有一种方法。     

解决方法

        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 也 Android:自动选择调试/发布Maps api密钥?     ,        我不知道Google Maps是如何工作的,但是这里有一个可能的选择:您可以使用包管理器提取用于签署APK的证书,并将其与您已知的发行密钥库进行比较。我建议将其与该密钥库而不是您的调试密钥库进行比较,因为调试库每年到期一次;如果您遵循Google的指导方针,那么您的发行商店将不会过期很长时间。     ,        调试和发布密钥库在功能上是等效的。调试密钥库是由SDK自动生成的,但是您可以将其替换为任何喜欢的密钥库(我实际上是在几台开发机上这样做,以具有相同的调试密钥库)。 因此,在最一般的情况下,发布和调试密钥库之间没有区别。 当然,您可以将发布公用密钥嵌入到应用程序中,并在未使用适当的私有发布密钥对应用程序签名的情况下检测情况。如果是这样,请假设您处于由调试密钥库签名的应用程序中。但是我不能说这是一个理想的解决方案,因为它没有那么明显的依赖性。