BookinglyTech News
Software

El SDK de AdMob para Unity no impide la compilación sin App ID

Una prueba muestra que el plugin de GoogleMobileAds‑v11.5.0 no bloquea el build aunque el campo de App ID esté vacío, generando un APK que falla al iniciarse.

2 min de lecturaDev.to0 vistas

Al importar el paquete GoogleMobileAds‑v11.5.0.unitypackage en un proyecto vacío de Unity 6000.4.0f1 y generar un APK de release, el proceso finaliza sin errores y produce un archivo de 19 627 503 bytes. El APK se instala, lanza la aplicación y se cierra antes de que Unity dibuje el primer frame.

El SDK declara en GoogleMobileAdsDependencies.xml las siguientes dependencias de Android:

  • com.google.android.gms:play‑services‑ads:25.4.0
  • androidx.constraintlayout:constraintlayout:2.1.4
  • androidx.lifecycle:lifecycle‑process:2.6.2
  • androidx.fragment:fragment:1.7.1

Y en GoogleUmpDependencies.xml añade com.google.android.ump:user‑messaging‑platform:4.0.0. El gestor de dependencias externo incluido es la versión 1.2.188.

El código que debería detener el build está repartido en dos clases. En AndroidBuildPreProcessor.cs se menciona una excepción para un App ID vacío, pero la lógica real está en ManifestProcessor.cs:

string appId = instance.GoogleMobileAdsAndroidAppId.Trim();
if (appId.Length == 0) {
    StopBuildWithMessage("Android Google Mobile Ads app ID is empty. Please enter a valid app ID to run ads properly.");
}

Las clases tienen órdenes de callback diferentes (‑1 y 0), de modo que el pre‑procesador se ejecuta antes que el manifest processor. Unity captura cualquier excepción lanzada por un IPreprocessBuildWithReport, la escribe en el log y continúa el proceso de compilación. Por eso el build termina con result=Succeeded y un único error en el informe.

Al inspeccionar el APK con aapt2 se comprueba que la clave com.google.android.gms.ads.APPLICATION_ID no está presente en el AndroidManifest.xml. Sin embargo, el resto del SDK sí se incluye: los proveedores y actividades de AdMob, y dos dex con más de mil referencias a com/google/android/gms/ads.

Al ejecutar el APK en un emulador Pixel 9 Pro (API 36) la aplicación lanza una RuntimeException en MobileAdsInitProvider porque falta el App ID, tal y como indica el mensaje de Google:

Missing application ID. AdMob publishers should follow the instructions …

El comportamiento confirma que el plugin no puede bloquear la generación del binario, aunque la documentación afirme lo contrario. La única forma de evitar el APK defectuoso es proporcionar manualmente el App ID antes de iniciar la compilación.

Qué implica para los equipos: la verificación de App ID debe hacerse fuera del ciclo de build de Unity, por ejemplo mediante scripts de CI que inspeccionen el AndroidManifest.xml o que añadan el valor mediante el GoogleMobileAdsSettings antes de lanzar el proceso. De lo contrario, se corre el riesgo de publicar builds que fallan en tiempo de ejecución y generan informes de fallos en producción.

Más detalles en el artículo original