Para actualizar un archivo APK deben coincidir dos propiedades:
- El nombre del paquete de la aplicación (puede verse en
AndroidManifest.xml
después de descompilarlo)
- La firma de la aplicación debe coincidir (el certificado de firma utilizado debe ser el mismo).
La mejor manera de verificar la firma de un archivo APK y ver el certificado de firma utilizado y la clave pública a utilizar apksigner.jar
para el SDK de Android (build-tools):
El siguiente ejemplo verifica dos versiones de la aplicación de correo electrónico de Samsung utilizando apksigner
:
java -jar <path to apksigner>\apksigner.jar verify -verbose --print-certs "Samsung Email_v4.2.74.1_apkpure.com.apk"
java -jar <path to apksigner>\apksigner.jar verify -verbose --print-certs "Samsung Email_v4.1.43-5_apkpure.com.apk"
Cada vez que se obtiene una salida como esta:
Verifies
Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): true
Number of signers: 1
Signer #1 certificate DN: EMAILADDRESS=android.os@samsung.com, CN=Samsung Cert, OU=DMC, O=Samsung Corporation, L=Suwon City, ST=South Korea, C=KR
Signer #1 certificate SHA-256 digest: 34df0e7a9f1cf1892e45c056b4973cd81ccf148a4050d11aea4ac5a65f900a42
Signer #1 certificate SHA-1 digest: 9ca5170f381919dfe0446fcdab18b19a143b3163
Signer #1 certificate MD5 digest: d087e72912fba064cafa78dc34aea839
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 2048
Signer #1 public key SHA-256 digest: 0470be656b9375d253fbb94c3a87dc7040e2f2760c19c4292eb62cc68e02de4a
Signer #1 public key SHA-1 digest: df1e4fd4fc2ebfc187f79309dfc6a4c662bda4d0
Signer #1 public key MD5 digest: 7c6371f33db3b4361504cb13beb6e818
Sólo tiene que comparar el resumen sha256 del certificado y/o del clave pública . Si los dos APKs son iguales puedes estar seguro de que han sido lanzados por la misma persona o empresa (siempre y cuando el propietario de la aplicación no haya vendido la aplicación a otra persona o la clave privada haya sido robada).
2 votos
La clave es sólo una parte de lo que la consideraría una actualización. Puede utilizar la misma clave para firmar varias aplicaciones. La otra parte importante para garantizar que una aplicación es una actualización es que los paquetes tengan el mismo nombre.
0 votos
Sí. Soy consciente de ello, sin embargo por lo que yo sé que estoy o.k. con los nombres de los paquetes. donde en el apk sería el nombre del paquete se enumeran (sólo para que yo pueda estar seguro ?)
3 votos
Si abre el
AndroidManifest.xml
puedes encontrar el nombre del paquete incluso sin descompilar la aplicación. Debe estar cerca del principio del archivo entre algunos símbolos.