¿Qué precauciones y advertencias debemos conocer al usar el nuevo "APK Signature Scheme v2"?
Fondo
Recientemente, cuando estaba a punto de firmar mi APK para ser publicado en Play Store, obtuve esta nueva opción:
- Archivo de configuración de inicio de sesión de Google para varios desarrolladores
- Cambio de contraseña de contraseña de firma de android
- Cómo se firman los archivos .apk
- Firmar APK sin poner información de almacén de claves en build.gradle
- Fallo
Al pulsar el enlace "Ayuda de firma", abrió esta página web: https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2
Buscando más, he encontrado esto:
Http://android-developers.blogspot.co.il/2016/11/understanding-apk-packaging-in-android-studio-2-2.html
Resulta que es una nueva verificación en Android 7.x, que puede ayudar a hacer el APK más seguro, pero también un poco más pequeño en tamaño.
Intenté usar esta nueva característica, y como fue escrito en el blog, hace el APK un poco más pequeño. También, tal y como se escribió, se entiende sólo en Android 7.x y superior (sin embargo, puede firmar utilizando ambos métodos en el mismo APK, lo que le permite instalar la aplicación en versiones anteriores de Android también).
El problema
No entiendo si es seguro utilizar el nuevo mecanismo de firma, y qué es exactamente lo que advierten sobre los documentos.
Hay al menos una advertencia que he leído que no creo que necesite un cuidado especial para la mayoría de develoeprs:
Precaución: Si firma su aplicación utilizando APK Signature Scheme v2 y realiza otros cambios en la aplicación, la firma de la aplicación se invalidará. Por esta razón, utilice herramientas como zipalign antes de firmar su aplicación utilizando APK Signature Scheme v2, no después.
Creo que puedo ignorar esta advertencia, porque sólo dejo que el IDE en sí construir el APK utilizando el comportamiento de construcción predeterminado.
Lo que intenté
He intentado usar todas las 3 formas de firmar la aplicación:
- V1
- V2
- V1 y v2 (juntos en un solo APK)
Parece que v2 por sí solo no se puede instalar en las versiones anteriores a 7.x de Android, pero el resto puede, y también parece que v2 es más pequeño que v1, mientras que v1 y v2 es un poco más grande que v1.
Las preguntas
-
¿Es seguro cambiar de la firma antigua a la nueva (habilitando tanto la firma por supuesto)?
-
¿Tendrán los usuarios problemas de actualización? ¿Los usuarios actualizarán de v1 a v2 o de v2 (o v1 y v2) a v1 (en caso de que algo salga mal) – ¿tienen algún problema?
-
¿Debería saber sobre cualquier advertencia? ¿Tenía razón en que podía ignorar la advertencia que he mencionado?
-
Aparte de una mejor seguridad, ¿qué proporciona la firma utilizando v1 y v2 (juntos), que no tengo en v1?
-
Mi conjetura es que sólo de Android 7, podremos utilizar sólo v2, que proporciona una forma de tener APK más pequeños. ¿Es verdad?
- Error de "archivo de paquete no firmado correctamente": detecte si ocurre o no con la aplicación de Google Play.
- Aplicación Android de Eclipse: Ejecutar firmada con certificado real
- ¿Genera un almacén de claves para una aplicación de Android en el asistente Exportar aplicación de Android?
- ¿Cómo puedo firmar automáticamente las solicitudes de facturación?
- Perdió la clave privada para firmar android apk. ¿Se puede publicar la aplicación en Android Market?
- Descripción del almacén de claves, certificados y alias
- Gradle firma sabores con diferentes claves en Android
- ¿Es seguro cambiar de la firma antigua a la nueva (habilitando tanto la firma por supuesto)?
Sí. Siempre y cuando no modifiques el APK después de firmar, eres bueno.
- ¿Tendrán los usuarios problemas de actualización? ¿Los usuarios actualizarán de v1 a v2 o de v2 (o v1 y v2) a v1 (en caso de que algo salga mal) – ¿tienen algún problema?
Sin problemas. Una vez que el Administrador de paquetes de Android verifica una firma APK (utilizando el esquema v1 o v2), extrae los cert (s) de firma y luego basa cualquier lógica adicional (por ejemplo, se permite este APK para ser utilizado como una actualización de la antigua) En el (los) certificado (s) de firma. Por lo tanto, siempre y cuando su APK se firma con el mismo cert (s) de firma, debe ser bueno.
- ¿Debería saber sobre cualquier advertencia? ¿Tenía razón en que podía ignorar la advertencia que he mencionado?
Puede ignorar esa advertencia en particular si utiliza sólo el complemento de Android para Gradle / Android Studio para crear y firmar sus APK. La advertencia está ahí para los desarrolladores que usan tuberías de construcción personalizadas que pueden modificar APK después de firmar.
No tengo conocimiento de otras advertencias.
- Aparte de una mejor seguridad, ¿qué proporciona la firma utilizando v1 y v2 (juntos), que no tengo en v1?
V2 firma verifica mucho más rápido. Esto significa que APKs firmados con v2 instalan / actualizan un poco más rápido en Android Nougat (Android 7.0, API Level 24) y más reciente.
- Mi conjetura es que sólo de Android 7, podremos utilizar sólo v2, que proporciona una forma de tener APK más pequeños. ¿Es verdad?
Correcto. Sin embargo, el ahorro de tamaño APK nunca fue un objetivo de APK Signature Scheme v2. El ahorro es sólo una pequeña cifra proporcional al número de archivos en el APK, no a su tamaño. Lo que se ahorra son los resúmenes por archivo en META-INF/MANIFEST.MF
y META-INF/*.SF
. El META-INF/*.(RSA|DSA|EC)
es reemplazado por el Bloque del Esquema de la Firma APK de tamaño similar en otra parte del APK.