2010-04-21 11 views
8

Basándose en la documentación de firma en https://developer.android.com/studio/publish/index.html:aplicación de muestra con varios certificados

Cuando el sistema está instalando una actualización de una aplicación, si alguno de los certificados de la nueva versión que coincida con cualquiera de los certificados en la versión anterior , entonces el sistema permite la actualización.

Esto indica que una aplicación se puede firmar con varios certificados.

Esta es una opción interesante para permitir que varias entidades firmen una aplicación. por ejemplo, una aplicación del sistema que fue inicialmente firmada por el fabricante del dispositivo. El desarrollador puede firmar nuevas actualizaciones.

¿Estoy malinterpretando la documentación o esto es realmente posible? ¿Si es así, cómo?

¿Hay alguna otra manera para que una aplicación admita certificados diferentes y con eso, tener dos o más entidades lo firmen?

+1

"Una aplicación del sistema que fue inicialmente firmada por el fabricante del dispositivo. El desarrollador puede firmar otras actualizaciones". - Eso específicamente no es posible. Una "actualización" implica un cambio, por lo que el APK debería ser rescindido por el fabricante. – CommonsWare

+0

¿Estás diciendo que no es posible tener más de un certificado para una aplicación determinada? Tal vez mi ejemplo no estaba completo, debería haber escrito: "Una aplicación de sistema que tiene dos certificados y fue firmado inicialmente por el fabricante del dispositivo. El desarrollador puede firmar nuevas actualizaciones, con el uso del segundo certificado". Creo que esto es contrario a la documentación, ¿o no? – rcabaco

+0

Según [la documentación oficial] (http://developer.android.com/tools/publishing/app-signing.html # signing-manually): _Tenga en cuenta que puede firmar un APK varias veces con diferentes claves_. – Stan

Respuesta

2

Puede firmar un apk con diferentes certificados si usa un alias diferente en el proceso de firma.

Esto creará diferentes archivos dentro de la carpeta META-INF. No sé cuáles son las implicaciones para el proceso de actualización dentro del mercado de Android.

+0

Creo que tu respuesta es el camino a seguir. El mío fue un truco. De las pruebas que hice, el META-INF no se tiene en cuenta al firmar los apk. Esto terminó no siendo el lanzamiento, pero hice la prueba en dispositivos reales: la instalación del apk cambiado que es. – rcabaco

2

Encontré una solución para esto, no tan bonita, pero una solución, no obstante.

Un firmó archivo APK se compone de:

  • archivos firmado con un certificado determinado
  • una carpeta META-INF con el certificado de clave pública

Para tener un APK con varios certificados:

  • Cada parte firma el apk
  • El contenido META-INF de cada apk se recogen
  • un nuevo apk (esto es sólo un archivo zip) se crea y la carpeta META-INF contiene todos los certificados

Esto permitirá que cualquiera de la firma partes para actualizar el apk.

Una nota, no hay posibilidad de agregar certificados en una actualización.

+0

¿Cómo hiciste eso? ¿Podría explicar esto un poco más? Pensé que cambiar el contenido de la aplicación y volver a empaquetarla debería cambiar el archivo resultante y hacer inútiles los intentos de firma previa. – Janusz

+0

Hey - * bump * - mi suposición sería con @Janusz, ¿cómo agregarías las nuevas firmas sin afectar la firma de todo el paquete? ¿META-INF está excluido del cálculo de la firma? –

Cuestiones relacionadas