while - diferencia entre las versiones de firma: V1(Jar Signature) y V2(Full APK Signature) al generar apk firmado en AndroidStudio?
key store path android studio (5)
Creo que this representa una buena respuesta.
Verificación de APK Signature Scheme v2
-
Localice el
APK Signing Block
y verifique que:-
Dos campos de tamaño del
APK Signing Block
deAPK Signing Block
contienen el mismo valor. -
ZIP Central Directory
es seguido inmediatamente por el registroZIP End of Central Directory
. -
ZIP End of Central Directory
no es seguido por más datos.
-
Dos campos de tamaño del
-
Ubique el primer
APK Signature Scheme v2 Block
dentro delAPK Signing Block
. Si el Bloque v2 está presente, continúe con el paso 3. De lo contrario, vuelva a verificar el APK utilizando el esquema v1. -
Para cada firmante en el
APK Signature Scheme v2 Block
:- Elija la ID de algoritmo de firma compatible más fuerte de las firmas. El orden de fuerza depende de cada versión de implementación / plataforma.
- Verifique la firma correspondiente de las firmas contra los datos firmados usando la clave pública. (Ahora es seguro analizar los datos firmados).
- Verifique que la lista ordenada de ID de algoritmos de firma en resúmenes y firmas sea idéntica. (Esto es para evitar la eliminación / adición de firmas).
- Calcule el resumen del contenido de APK utilizando el mismo algoritmo de resumen que el algoritmo de resumen utilizado por el algoritmo de firma.
- Verifique que el resumen calculado sea idéntico al resumen correspondiente de los resúmenes.
-
Verifique que
SubjectPublicKeyInfo
del primer certificado de certificados sea idéntico a la clave pública.
- La verificación tiene éxito si se encontró al menos un firmante y el paso 3 tuvo éxito para cada firmante encontrado.
Nota: APK no debe verificarse usando el esquema v1 si ocurre una falla en el paso 3 o 4.
Verificación de APK firmada por JAR (esquema v1)
El APK firmado con JAR es un JAR firmado estándar, que debe contener exactamente las entradas enumeradas en
META-INF/MANIFEST.MF
y donde todas las entradas deben estar firmadas por el mismo conjunto de firmantes.
Su integridad se verifica de la siguiente manera:
-
Cada firmante está representado por una entrada JAR
META-INF/<signer>.SF
yMETA-INF/<signer>.(RSA|DSA|EC)
. -
<signer>.(RSA|DSA|EC)
es unPKCS #7 CMS ContentInfo
ContentInfo con estructura SignedData cuya firma se verifica sobre el archivo<signer>.SF
. -
<signer>.SF
archivo<signer>.SF
contiene un resumen de todo el archivo deMETA-INF/MANIFEST.MF
y los resúmenes de cada sección deMETA-INF/MANIFEST.MF
. Se verifica el resumen del archivo completo deMANIFEST.MF
. Si eso falla, el resumen de cada secciónMANIFEST.MF
se verifica en su lugar. -
META-INF/MANIFEST.MF
contiene, para cada entrada JAR protegida con integridad, una sección correspondiente que contiene el resumen del contenido sin comprimir de la entrada. Todos estos resúmenes se verifican. -
La verificación del APK falla si el APK contiene entradas JAR que no figuran en
MANIFEST.MF
y no son parte de la firma JAR. La cadena de protección es, por lo tanto,<signer>.(RSA|DSA|EC)
→<signer>.SF
→MANIFEST.MF
→ contenido de cada entrada JAR protegida con integridad.
Seleccione al menos una de las versiones de firma para usar en Android Studio 2.3
Ahora, mientras genera apk firmado en Android Studio, muestra dos opciones (CheckBox), a saber: 1.
V1(Jar Signature)
y 2. `V2 (Full APK Signature) ''como
versiones Signature
en el último paso del proceso de generación de apk firmado.
Entonces, ¿cuál es la diferencia entre estos V1 (Jar Signature) y V2 (Full APK Signature) en la nueva actualización de Android Studio?
¿Y qué debo usar (o ambos) para firmar apk para el lanzamiento de Play Store?
También recibo el error Instalar Parse no falló sin certificados al instalar apk cuando uso la segunda opción.
De acuerdo con este enlace: here
APK Signature Scheme v2 ofrece:
- Tiempos de instalación de aplicaciones más rápidos
- Más protección contra alteraciones no autorizadas de archivos APK.
Android 7.0 presenta APK Signature Scheme v2, un nuevo esquema de firma de aplicaciones que ofrece tiempos de instalación de aplicaciones más rápidos y más protección contra alteraciones no autorizadas de archivos APK. De forma predeterminada, Android Studio 2.2 y el complemento de Android para Gradle 2.2 firman su aplicación utilizando el APK Signature Scheme v2 y el esquema de firma tradicional, que utiliza la firma JAR.
Se recomienda utilizar APK Signature Scheme v2, pero no es obligatorio .
Aunque recomendamos aplicar APK Signature Scheme v2 a su aplicación, este nuevo esquema no es obligatorio. Si su aplicación no se compila correctamente cuando usa APK Signature Scheme v2, puede deshabilitar el nuevo esquema.
Es un nuevo mecanismo de firma introducido en Android 7.0, con características adicionales diseñadas para hacer que la firma APK sea más segura.
No es obligatorio. Debería marcar AMBAS de esas casillas de verificación si es posible, pero si el nuevo mecanismo de firma V2 le genera problemas, puede omitirlo.
Por lo tanto, puede dejar V2 sin marcar si encuentra problemas, pero debe tenerlo marcado si es posible.
Está escrito here que "De manera predeterminada, Android Studio 2.2 y el complemento de Android para Gradle 2.2 firman su aplicación utilizando el APK Signature Scheme v2 y el esquema de firma tradicional, que utiliza la firma JAR".
Como parece que estas nuevas casillas de verificación aparecieron con Android 2.3, entiendo que mis versiones anteriores de Android Studio (al menos la 2.2) firmaron con ambas firmas. Entonces, para continuar como lo hice antes, creo que es mejor marcar ambas casillas.
EDITAR 31 de marzo de 2017: se presentaron varias aplicaciones con ambas firmas => no hay problema :)
¿Debo usar (o ambos) para firmar apk para el lanzamiento de Play Store? Una respuesta es sí.
Según https://source.android.com/security/apksigning/v2.html#verification :
En Android 7.0, los APK se pueden verificar de acuerdo con el esquema de firma APK v2 (esquema v2) o la firma JAR (esquema v1). Las plataformas más antiguas ignoran las firmas v2 y solo verifican las firmas v1.
Traté de generar compilación con la opción de comprobación V2 (Firma Apk completa) . Luego, cuando traté de instalar una versión de lanzamiento en un dispositivo por debajo de 7.0 y no puedo instalar la versión en el dispositivo.
Después de eso intenté compilar marcando la casilla de verificación de ambas versiones y generar la compilación de lanzamiento. Luego puede instalar build.