Detección de depuración de almacén de claves o liberación de almacén de claves programáticamente

Me preguntaba si había una manera de detectar si el programa se está ejecutando en el almacén de claves por defecto (depuración) (cuando se ejecuta desde eclipse) o en un almacén de claves firmado (cuando se libera al mercado de Android)

Utilizo Google Maps en mi aplicación y me gustaría cambiar programáticamente la clave de la API de Google Maps para la prueba y la publicación, ya que la clave de una API solo funciona para la prueba o la versión.

Debe haber una manera de hacerlo, ya que Google Maps puede detectar qué almacén de claves se utilizó para compilar la aplicación (para habilitar o deshabilitar los mapas).

http://daniel-codes.blogspot.com/2011/04/detecting-keystore-signature-in-code.html

Esto parece ser un método apropiado para identificar claves de liberación

también

http://whereblogger.klaki.net/2009/10/choosing-android-maps-api-key-at-run.html

también

Android: automáticamente elige debug / release Maps clave api?

No sé cómo Google Maps hace su cosa, pero aquí está una alternativa posible: Puede utilizar el gestor de paquetes para extraer el certificado utilizado para firmar el APK y compararlo con su liberado keystore de liberación. Sugiero compararlo a esto en lugar de su debug keystore porque la tienda de depuración expira anualmente; Su tienda de lanzamiento no expirará por mucho tiempo (si siguió las directrices de Google).

Los depuradores de depuración y liberación son equivalentes en su poder. El almacén de claves de depuración es generado automáticamente por SDK, pero puede reemplazarlo por cualquier almacén de claves que desee (en realidad, hago esto para tener el mismo depurador de claves en mis varias máquinas de desarrollo).

Por lo tanto, en el caso más general, no hay distinción entre la liberación y depurar keystores.

Por supuesto, puede incrustar la clave pública de liberación en su aplicación y detectar casos cuando la aplicación no está firmada con la clave de liberación privada apropiada. Y si es así, asuma que está en la aplicación firmada por debug keystore. Pero no puedo decir que esta es una solución ideal, ya que tiene una dependencia no tan evidente.

  • Cómo encontrar la huella dactilar MD5 de mi aplicación para Android
  • Android, varias aplicaciones, varios clientes, un almacén de claves
  • Android bouncy castle: IOException
  • Android Keystore: "Keystore fue manipulado, o la contraseña era incorrecta."
  • Configurar Eclipse para usar el almacén de claves firmado
  • ¿Es seguro que almacena información de tarjeta creadit en android?
  • ¿Dónde puedo encontrar la ubicación predeterminada para las librerías de claves android creadas por eclipse?
  • Es posible liberar una aplicación actualizada mediante la firma con un certificado diferente de la que se utilizó originalmente
  • Cómo importar clave privada RSA, generada por openssl, en AndroidKeyStore
  • no se puede conectar al servidor utilizando BKS keystore
  • Error de "Versión incorrecta de almacén de claves". ¿Cómo puedo crear un certificado de almacén de claves de versión = 1?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.