android google-play apk

android - No se puede cargar el APK actualizado a Google Play debido a un certificado diferente



google-play (1)

Estoy usando Android Studio para construir mis proyectos de Android y, cuando subo mi APK a Google Play, sigue mostrándome este error a pesar de usar el mismo almacén de claves que utilicé para versiones anteriores de mi aplicación:

Subida fallida

Cargó un APK que está firmado con un certificado diferente a sus APK anteriores. Debes usar el mismo certificado.

Sus APK existentes están firmados con los certificados con huella digital:
[SHA1: 89: 2F: 11: FE: CE: D6: CC: DF: 65: E7: 76: 3E: DD: A7: 96: 4F: 84: DD: BA: 33]
y los certificados utilizados para firmar el APK que cargó tienen huellas digitales:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]


En primer lugar, es poco probable que Google Play esté mal aquí. ¿Seguro que no usó su clave de depuración por error?

Verifique las claves de firma utilizadas

Debe verificar dos veces qué certificados contienen el APK antiguo y el APK nuevo, con los comandos:

jarsigner -verify -verbose:summary -certs old.apk jarsigner -verify -verbose:summary -certs new.apk

Esto le muestra información sobre los archivos firmados en cada APK, como este:

sm 4642892 Thu Apr 17 10:57:44 CEST 2014 classes.dex (and 412 more) X.509, CN=My App, O=My Company, C=DE, L=Köln [certificate is valid from 11/11/13 12:12 to 29/03/41 12:12] [CertPath not validated: Path does not chain with any of the trust anchors]

Si el nuevo APK dice X.509, CN=Android Debug, O=Android, C=US , entonces ha firmado el APK con su clave de depuración en lugar de la clave de lanzamiento original.

Si las cadenas de identidad X.509 son diferentes o las fechas del certificado son diferentes entre los dos APK, acaba de confirmar que no usó la misma clave de firma para ambos APK.

Puede ignorar cualquier mensaje "CertPath no validado"; No es relevante en este caso.

Busque el almacén de claves original

Si la información del certificado es diferente, debe encontrar el almacén de claves original, es decir, el archivo con el primer valor SHA1 que Google Play le indicó.

Busque en todos los archivos del almacén de claves que pueda encontrar hasta que tenga el que tenga la huella digital SHA1 correcta:

keytool -list -keystore my-release.keystore

No puedo encontrar el almacén de claves original.

Si no puede encontrar el almacén de claves original, nunca podrá publicar ninguna actualización de esta aplicación en particular.

Android menciona esto explícitamente en la página Firmando su aplicación :

Advertencia: mantenga su almacén de claves y su clave privada en un lugar seguro y protegido, y asegúrese de tener copias de seguridad seguras de ellos. Si publica una aplicación en Google Play y luego pierde la clave con la que firmó su aplicación, no podrá publicar ninguna actualización en su aplicación, ya que siempre debe firmar todas las versiones de su aplicación con la misma clave.

Después del primer lanzamiento de un APK, todos los lanzamientos posteriores deben firmarse con la misma clave exacta.

¿Puedo extraer la clave de firma original del APK original?

No. Esto no es posible. El APK solo contiene información pública, y no su información de clave privada.

¿Puedo migrar a una nueva clave de firma?

No. Incluso si encuentra el original, no puede firmar un APK con la tecla A, luego firmar la próxima actualización con las teclas A y B, luego firmar la próxima actualización con solo la tecla B.

Firmar un APK (o cualquier archivo JAR) con múltiples claves técnicamente posibles, pero Google Play no acepta APK con múltiples firmas.

¿Que puedo hacer?

Tendrá que crear su aplicación con una nueva ID de aplicación (por ejemplo, cambiar de "com.example.myapp" a "com.example.myapp2") y crear una nueva lista en Google Play.

Posiblemente también tendrá que cambiar su código para que las personas puedan instalar la nueva aplicación incluso si tienen instalada la aplicación anterior, por ejemplo, debe asegurarse de no tener proveedores de contenido en conflicto.

Perderá su base de instalación existente, revisiones, etc., y tendrá que encontrar una manera de hacer que sus clientes existentes desinstalen la aplicación anterior e instalen la nueva versión.

Nuevamente, asegúrese de tener copias de seguridad del almacén de claves y la contraseña que utiliza para esta versión.