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.
- Error de lectura: error en la biblioteca SSL, generalmente un error de protocolo
- Android Development: Keytool, la creación de un almacén de claves?
- ¿Podemos subir apk con diferentes keystore firmado después de desactivar el apk actual en android
- Cordova build -release Android Unsigned apk
- SSLHandshakeException: Ancla de confianza para la ruta de certificación no encontrada. Solo en la API de Android <19
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).
- Compartir debug.keystore
- Keystore y alias - ¿hay un uso a varios alias?
- Telegram API release.keystore ERROR
- AndroidKeyStore eliminado después del cambio de contraseña del dispositivo
- Android - ¿Qué archivo debug.keystore es IntelliJ firmando mi aplicación?
- Al construir la versión de apk usando android studio, obtengo un error "Keystore fue manipulado, o la contraseña era incorrecta"
- Android Marketplace: ¿Los detalles (nombre, etc) en el almacén de claves son visibles para el usuario?
- Hash clave para Facebook Android SDK
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.
- ¿Puede alguien ayudarme a entender el enhebrado de mi programa?
- Problema de desplazamiento de diseño gráfico en el desarrollo de Android de Eclipse