Ver el nombre de un APK

Photo by Guido Coppa on Unsplash

Ver el nombre de un APK

Al intentar desplegar una nueva versión de un APK en la store, salta el error "APK has the wrong package name". Esto se debe a que el packagename que se indica en el AndroidManifest.xml del APK no coincide con el package name que ya está en la store, por lo que se rechaza al desplegar.

La solución es cambiar el nombre del paquete, volver a montar el APK y listo. Pero, ¿Es posible validarlo, por ejemplo en un paso de nuestro CI/CD?

Dentro de las muchas soluciones (por ejemplo, as descritas en este post de StackOverflow), me quedo con utilizar aapt2.

El primer paso sería descargar la versión necesaria desde maven, en función del OS que queramos, conforme la documentación oficial. Básicamente, consiste en identificar la versión del paquete que queremos descargar (en mi caso 7.2.1-7984345 y para windows), y descargarlo del repositorio maven:

dl.google.com/dl/android/maven2/com/android..7.2.1-7984345/aapt2-7.2.1-7984345-windows.jar

Una vez descargado, descomprimimos el .jar y tenemos un ejecutable aapt2.exe.

Finalmente, se consulta el nombre del paquete con el comando dump:

aapt2 dump packagename miarchivodesconocido.apk

El resultado del comando es el nombre del paquete

es.miorg.mipaquete

Y podemos comprobar este valor con el nombre necesario, y rechazar el build si es necesario.

EDIT: Si queremos obtener la versión declarada en el manifest, podemos hacer lo siguiente:

aapt2 dump badging miarchivodesconocido.apk | grep version

Nos dará el siguiente resultado

package: name='es.miorg.mipaquete' versionCode='XX' versionName='XX.YY.ZZ aaa'