Saltar al contenido
WebViewGold Del vibe coding a la App Store
Español
Consigue WebViewGold

ChatGPT & Codex

Errores de compilación de Gradle en un proyecto Android de WebViewGold: JDK, AGP, cambio de nombre de paquete, keystore y targetSdk con Codex

Las compilaciones de Android fallan por una lista corta de motivos: el JDK equivocado, un Android Studio más antiguo que el proyecto, un cambio de nombre de paquete que se dejó un archivo, un google-services.json del paquete antiguo o un keystore que no coincide. Codex lee la salida de Gradle más rápido que nadie y puede arreglar casi todo en los archivos del proyecto. Aquí tienes el mapa, el prompt seguro y el único archivo que te guardas para ti.

Desde $109 de pago único por plataforma, o deja que nuestro equipo lo haga todo desde $698.

  • Garantía de aprobación – o te devolvemos el dinero en 14 días
  • Sin programar
  • Pago único, actualizaciones gratuitas
  • Soporte humano 24/7
  • Hecho en Alemania desde 2014 · ISO 27001

Los archivos detrás de casi todos los errores de compilación de Android

El proyecto Android de WebViewGold es un proyecto normal de Android Studio con un pequeño conjunto de archivos que de verdad tocas. Conocerlos hace que cualquier error de Gradle se entienda:

  • Config.java: tu URL, el host, el user agent y los interruptores de funciones (consulta la documentación de configuración para Android).
  • app/build.gradle: la identidad de la app (applicationId y, en las versiones actuales, namespace para el paquete del código), versionCode y versionName, los niveles de SDK (compileSdk, targetSdk, minSdk), las dependencias y el app ID de OneSignal si usas OneSignal.
  • Versiones del wrapper de Gradle y del plugin: qué Gradle y qué Android Gradle Plugin (AGP) espera el proyecto. En la plantilla coinciden; los problemas empiezan cuando el IDE es más antiguo que el proyecto o alguien las edita.
  • app/google-services.json: la configuración de Firebase, emitida para un único nombre de paquete.
  • res/: strings.xml (nombre de la app y textos), colors.xml, los iconos del launcher en las carpetas mipmap-* y el GIF de la pantalla de inicio.

Y un archivo que no debería estar nunca en la carpeta del proyecto: tu upload keystore.

Errores de Gradle y de Play Console, descifrados

MensajeCausaSolución¿Codex?
"The project is using an incompatible version (AGP …) of the Android Gradle plugin. Latest supported version is AGP …"Android Studio es más antiguo que el proyectoActualiza Android Studio (Help → Check for Updates) y después File → Sync Project with Gradle Files. No bajes la versión del pluginLo explica; tú actualizas el IDE
"Android Gradle plugin requires Java 17 to run" / "Invalid Gradle JDK configuration found"Gradle se ejecuta con el JDK equivocadoSettings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JDK: elige el JDK incluido con Android Studio. En una terminal, apunta JAVA_HOME a ese JDKSí
"SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable …"No hay local.properties (clon nuevo o compilación desde la terminal)Abre el proyecto una vez en Android Studio, que escribe el archivo, o créalo con sdk.dir; no hagas nunca commit de élSí
"Failed to find target with hash string android-…" / "Module … platform android-… not found"La plataforma del SDK para compileSdk no está instaladaTools → SDK Manager → instala ese nivel de API, o pulsa "Install missing SDK package(s)" en la ventana BuildLo explica
"No matching client found for package name …"google-services.json se emitió para otro nombre de paquete, normalmente el de la plantillaRegistra el nuevo paquete en Firebase y descarga un google-services.json nuevo en app/Lo encuentra; tú lo descargas
"Duplicate class ….BuildConfig"Un BuildConfig generado y obsoleto tras cambiar el nombre del paqueteBorra el archivo obsoleto, Build → Clean Project y después Rebuild ProjectSí
"Duplicate resources"Dos archivos con el mismo nombre de recurso, p. ej. ic_launcher.png e ic_launcher.webp de un generador de iconosDeja un solo archivo por nombre de recursoSí
"resource mipmap/ic_launcher_foreground … not found"Falta un icono de primer plano en una de las carpetas mipmapSustituye los iconos uno a uno, conservando todos los nombres de archivo en todas las carpetasSí
"Keystore was tampered with, or password was incorrect"Contraseña del keystore incorrecta o archivo equivocadoBusca el archivo y la contraseña correctos en tu gestor de contraseñas; no hay forma de recuperarlosNo
Play Console: "Your Android App Bundle is signed with the wrong key"Firmado con una upload key distinta de la que espera PlayFirma con el upload keystore original; si lo has perdido, solicita un restablecimiento de la upload key en Play ConsoleCompara las huellas
Play Console: "Version code … has already been used"No se incrementó el versionCodeAumenta versionCode (y versionName para los usuarios) en app/build.gradleSí
Play Console: "You need to use a different package name because … already exists"Nunca se cambió el paquete de la plantilla com.webviewgold.myappnameCambia el nombre del paquete antes de la primera subida (pasos más abajo)Sí
Aviso o rechazo por el nivel de API objetivoEl bundle se compiló a partir de una plantilla antiguaActualiza la plantilla y vuelve a compilar (consulta el recuadro de abajo)Lo explica

Por qué compila en Android Studio pero falla cuando Codex ejecuta Gradle

Codex ejecuta ./gradlew en una terminal, y una terminal no es Android Studio. Tres diferencias explican casi todos los momentos de "pero en el IDE funciona":

  • JDK. Android Studio usa su JDK incluido; la terminal usa lo que indique JAVA_HOME, que a menudo es un Java antiguo o nada. Apúntalo al JDK incluido (en macOS normalmente /Applications/Android Studio.app/Contents/jbr/Contents/Home) antes de compilar, o pídeselo a Codex.
  • Ruta del SDK. Android Studio escribe local.properties con sdk.dir; un clon nuevo no lo tiene. Codex puede crearlo con la ruta de tu SDK local, y se queda fuera de Git.
  • Red. La primera compilación de Gradle descarga plugins y dependencias. Según tus ajustes de aprobación, Codex pregunta antes de ejecutar comandos que necesitan acceso a la red fuera de su sandbox; apruébalo para Gradle o haz tú la primera compilación.

En principio, una tarea en la nube de Codex también puede compilar el proyecto Android, pero solo después de que su script de instalación configure un JDK y el SDK de Android y de que sus reglas de red permitan el Maven de Google y sus hosts de descarga. Para un arreglo puntual, compilar en local es más sencillo.

Con una buena versión optimizada de su aplicación web, puedes tener una impresionante aplicación móvil en un par de minutos. ¡Además del servicio al cliente es muy agradable y muy útil! ¡Puedo recomendar WebViewgold :-)

Julian Koch · Cofundador de Dueldonkey · CodeCanyon

Reúne los datos en un minuto

Ejecútalo en la carpeta del proyecto Android (la que contiene gradlew; en Windows usa gradlew.bat), o deja que lo ejecute Codex. La build de debug comprueba que el proyecto compila sin que intervenga tu clave de firma.

bash
# 1. Gradle version and the JDK Gradle runs on
./gradlew --version

# 2. Debug build with stack trace, log saved for Codex
./gradlew clean assembleDebug --stacktrace 2>&1 | tee gradle.log

# 3. Leftovers of the template package name after a rename
grep -rn "com.webviewgold.myappname" app/ --include=*.java --include=*.xml --include=*.gradle --include=*.json

# 4. Identity, versions and SDK levels Google checks
grep -n "applicationId\|namespace\|versionCode\|versionName\|compileSdk\|targetSdk\|minSdk" app/build.gradle

# 5. The package name your google-services.json was issued for
grep -n "package_name" app/google-services.json

# 6. Your upload key fingerprint (you run this; it asks for the keystore password)
keytool -list -v -keystore ~/keys/upload-keystore.jks

El prompt de triaje para Gradle

Las reglas evitan los dos errores clásicos de los agentes: actualizarlo todo para arreglar un solo error y tocar la firma.

Pégalo en la Codex CLI o en la extensión del IDE, abierta en la carpeta del proyecto Android
Este es el proyecto de Android Studio de WebViewGold para nuestra app. La compilación de Gradle falla. Lee gradle.log (la salida de ./gradlew clean assembleDebug --stacktrace) y arregla la causa.

Datos del proyecto:
- Los ajustes de la app están en Config.java; la identidad, las versiones y los niveles de SDK en app/build.gradle; los textos en res/values/strings.xml.
- Nuestro nombre de paquete: [com.yourbrand.app] (el de la plantilla por defecto era com.webviewgold.myappname).
- Ya subida a Google Play: [sí/no]. Si es que sí, applicationId no puede cambiar.
- Usamos Firebase o push basado en Firebase: [sí/no]. Si es que sí, app/google-services.json tiene que estar emitido para nuestro nombre de paquete.

Reglas:
- Encuentra el primer error real; ignora las advertencias de deprecación.
- No actualices el Android Gradle Plugin, Gradle, Kotlin, compileSdk, targetSdk ni ninguna dependencia salvo que el error lo exija. Si hace falta una actualización, detente y explica por qué y qué versión de Android Studio necesita.
- Si el error tiene que ver con el JDK o con la ruta del SDK, arregla JAVA_HOME o local.properties para esta máquina; no hagas commit de local.properties.
- No crees, muevas, muestres ni hagas commit nunca de un keystore ni de sus contraseñas, y no añadas configuración de firma a build.gradle.
- No edites google-services.json a mano. Si su nombre de paquete no coincide, dime que descargue un archivo nuevo desde la consola de Firebase.

Muestra el diff, ejecuta de nuevo ./gradlew assembleDebug para verificarlo y resume la causa en dos frases.

Cambia el nombre del paquete antes de la primera subida

La plantilla viene con com.webviewgold.myappname, que ya está ocupado en Google Play. Cámbialo una vez, antes de cualquier subida.

  1. Haz commit o una copia de seguridad

    La documentación de publicación para Android lo dice claramente: haz una copia de seguridad de la carpeta del código antes de cambiar el nombre. Con Git, un commit es la copia de seguridad.

  2. Elige el nombre definitivo

    DNS inverso, en minúsculas, sin guiones e idealmente idéntico a tu bundle ID de iOS. La primera subida a cualquier pista de Play lo bloquea (por qué es permanente).

  3. Cámbialo en todos los sitios donde aparece

    Sigue el vídeo sobre el cambio de nombre de la documentación de publicación (la refactorización de Android Studio) o deja que lo haga Codex: applicationId y namespace en app/build.gradle, la línea package al principio de cada archivo Java junto con la ruta de carpetas correspondiente, y AndroidManifest.xml. La documentación también muestra cómo acortar el nombre para quitar la parte del medio.

  4. Sustituye google-services.json

    Si usas Firebase o push basado en Firebase, añade en la consola de Firebase una app Android con el nuevo nombre de paquete y sustituye app/google-services.json. Editar el archivo antiguo a mano no es una solución.

  5. Busca restos, limpia y vuelve a compilar

    Ejecuta el grep del bloque de arriba hasta que no encuentre nada y después Build → Clean Project y Rebuild Project. Un error "Duplicate class …BuildConfig" en este punto significa que hay un archivo generado obsoleto; bórralo y vuelve a limpiar.

  6. Actualiza todo lo que depende del nombre

    Los ajustes de la app en OneSignal y RevenueCat, RATE_MY_APP_URL en Config.java y assetlinks.json en tu dominio si usas App Links.

El keystore: el único archivo que Codex no toca nunca

Google Play solo acepta actualizaciones firmadas con tu upload key, así que el keystore es el archivo más valioso de tu app Android. Créalo una vez con Build → Generate Signed App Bundle or APK en Android Studio, guárdalo fuera de la carpeta del proyecto y conserva el archivo y las dos contraseñas en un gestor de contraseñas, además de una copia de seguridad. Añade *.jks y *.keystore a .gitignore aunque nunca pienses hacer commit de uno.

Con Play App Signing, el estándar para las apps nuevas, Google guarda la clave de firma de la app y tu keystore es solo la upload key. Es una buena noticia si la pierdes: puedes solicitar un restablecimiento de la upload key en Play Console. No es inmediato, así que no cuentes con ello. Lo que no debes hacer nunca es dejar que un agente genere un keystore nuevo "para arreglar" un error de firma en una app que ya está en Google Play, ni pegar las contraseñas en un prompt. Tú ejecutas keytool -list -v y comparas la huella SHA-1 con la que muestra Play Console en su página de integridad de la app; Codex solo necesita el resultado.

Trampas habituales

  • Dejar que Codex "lo actualice todo" para arreglar un solo error. Los saltos de versión de AGP, Gradle, Kotlin y el SDK provocan errores nuevos en cascada; arregla el error que tienes delante.
  • Cambiar el nombre del paquete después de la primera subida. Google Play lo trata como una app distinta con una ficha nueva.
  • Un buscar y reemplazar de "webviewgold" en todo el proyecto. También afecta a nombres de clases, URLs y cadenas que deben quedarse como están; cambia la ruta del paquete, no cada aparición de la palabra.
  • Subir un APK. Las apps nuevas en Google Play necesitan un App Bundle (.aab).
  • Olvidarse de incrementar el versionCode en cada subida, incluidas las subidas a pistas de pruebas.
  • Probar solo la build de debug. Las builds de release aplican las reglas de ProGuard/R8 y tu firma; instala primero el bundle desde una pista de pruebas internas y planifica la prueba cerrada con 12 testers si tu cuenta personal de desarrollador la necesita.

Preguntas frecuentes

¿Puede Codex arreglar errores de Gradle sin tener Android Studio instalado?

Necesita un JDK y el SDK de Android en cualquier caso, y Android Studio es la forma más sencilla de conseguir ambos. Con ellos instalados, Codex puede ejecutar ./gradlew en la terminal y arreglar la mayoría de los errores en los archivos del proyecto.

¿Qué JDK necesita el proyecto Android de WebViewGold?

El que exija la versión del Android Gradle Plugin del proyecto; las versiones actuales del plugin necesitan JDK 17 o posterior. El JDK incluido con un Android Studio actual funciona, y por eso seleccionarlo como Gradle JDK soluciona la mayoría de los errores de JDK.

He perdido mi keystore. ¿He perdido la app?

No si Play App Signing está activado, que es el estándar para las apps nuevas: solicita un restablecimiento de la upload key en Play Console y firma las próximas actualizaciones con la nueva upload key. Sin Play App Signing no puedes actualizar la app y tienes que publicar una nueva.

¿Puedo cambiar el nombre del paquete después de publicar?

No. Un nombre de paquete distinto es una app distinta en Google Play, con una ficha nueva y sin valoraciones. Cámbialo antes de la primera subida a cualquier pista.

¿Debería aumentar yo mismo el targetSdk cuando Google Play lo pida?

Mejor actualiza la plantilla de WebViewGold. Apunta al nivel actual y contiene el código que necesita el nuevo comportamiento; cambiar solo el número puede subirse sin problemas y después romper las notificaciones o la subida de archivos.

Tres formas de llevar tu app a las tiendas

El mismo resultado, con distinta cantidad de trabajo por tu parte. Las tres incluyen la garantía de aprobación y soporte humano 24/7.

Hazlo tú mismo

$109 por plataforma, pago único

La licencia de WebViewGold: un proyecto de Xcode o Android Studio listo para usar. Pega tu URL, define nombre e icono, activa funciones, compila y envía. Actualizaciones gratuitas para siempre.

Ver planes en la página principal

Full Service

$698 por plataforma $798

Envíanos tu URL y tu icono. Nuestro equipo configura, compila y entrega tu app en 72 horas, en marca blanca y con los proyectos fuente. Ambas plataformas por $1,158.

Detalles del Full Service Con tecnología de WeSetupYourWebViewApp

Precios de la Oferta de invierno válidos hasta el 31 de diciembre de 2026.

¿Listo para lanzar tu app?

Garantía de aprobación en App Store & Google Play – o te devolvemos el dinero en 14 días

¿Prefieres delegarlo? Full Service: configuramos, compilamos y entregamos en 72 horas, desde $698 por plataforma. ¿Preguntas? Chatea con nosotros 24/7.

Los reembolsos se conceden bajo las condiciones indicadas en nuestras FAQ: un rechazo por motivos ajenos al contenido por parte de Apple y/o Google, reclamado dentro de los 14 días posteriores a la compra.