Cómo solucionar errores de compilación Gradle en el proyecto Android de WebViewGold con Claude Code
Las compilaciones de Android suelen fallar por motivos poco glamurosos: Gradle se ejecuta con el JDK equivocado, Android Studio es más antiguo que el plugin de Gradle del proyecto, un cambio de nombre de paquete se olvidó de google-services.json o el bundle está firmado con una clave que Google Play no espera. Claude Code puede ejecutar el wrapper de Gradle, leer el stack trace y corregir rápido la mayoría de estos casos. Aquí tienes los errores, los comandos y las partes que siguen siendo cosa tuya.
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
9:41
Tu app
Tu appYa en tu bolsillo
App Store · Google Play Aprobada
Tres versiones que tienen que encajar
Cada compilación de Android depende de que encajen tres versiones: el JDK que ejecuta Gradle, la versión de Gradle fijada en gradle/wrapper/gradle-wrapper.properties y el Android Gradle plugin (AGP) declarado en los archivos de compilación. Además, compileSdk y targetSdk en app/build.gradle necesitan que esté instalada la plataforma del SDK correspondiente. AGP 8 y posteriores necesitan como mínimo JDK 17.
La trampa clásica: Android Studio compila con su propio JDK incluido, mientras que Claude Code en la terminal usa aquel al que apunte JAVA_HOME. Por eso un proyecto puede compilar bien en el IDE y fallar en la shell del agente, o al revés. Arregla primero el entorno. Actualizar AGP o Gradle para esquivar un problema de JDK es la forma en que un asunto de diez minutos se convierte en un fin de semana.
El proyecto Android de WebViewGold es un proyecto estándar de Android Studio (la carpeta de descarga se llama AndroidStudioSource) que se configura sobre todo en Config.java y app/build.gradle, como muestra la documentación de configuración de Android.
Los comandos de diagnóstico
Pega la salida en Claude Code o deja que el agente ejecute los comandos por sí mismo. En Windows, usa gradlew.bat en lugar de ./gradlew.
bash
# Run in the folder that contains gradlew
# Versions: Gradle, and the JVM it runs on
./gradlew --version
grep distributionUrl gradle/wrapper/gradle-wrapper.properties
grep -rnE "com.android.tools.build:gradle|com.android.application" build.gradle settings.gradle app/build.gradle
grep -nE "compileSdk|targetSdk|minSdk|applicationId|namespace|versionCode|versionName" app/build.gradle
java -version
echo "JAVA_HOME=$JAVA_HOME"
# Use the JDK that ships with Android Studio (macOS path; on Windows it is
# C:\Program Files\Android\Android Studio\jbr)
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
# Debug build with a readable log
./gradlew assembleDebug --stacktrace 2>&1 | tee build-debug.log
# Release App Bundle for Google Play (uses your signing config)
./gradlew bundleRelease 2>&1 | tee build-release.log
Errores, causas y soluciones
Error (extracto)
Causa
Solución
Quién
Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
La terminal usa un JDK antiguo
Apunta JAVA_HOME al JDK incluido con Android Studio o a JDK 17 o 21. En el IDE: Settings, Build, Execution, Deployment, Build Tools, Gradle, Gradle JDK
Claude (terminal), tú (ajuste del IDE)
Unsupported class file major version 65
La versión de Gradle es demasiado antigua para el JDK que la ejecuta (65 es Java 21)
Ejecuta Gradle con el JDK para el que se hizo el proyecto; sube la versión del wrapper solo si lo hace el proyecto actual de WebViewGold
Claude
Minimum supported Gradle version is …
El wrapper es más antiguo de lo que exige la versión de AGP, a menudo tras una actualización accidental de AGP
Deshaz la actualización de AGP o pon en el wrapper la versión que indica el error
Claude
The project is using an incompatible version (AGP …) of the Android Gradle plugin
Android Studio es más antiguo que el proyecto
Actualiza Android Studio; no bajes la versión del proyecto
Tú
SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable…
Las compilaciones desde la línea de comandos no saben dónde está el SDK
Define sdk.dir en local.properties (nunca se sube con commit) o exporta ANDROID_HOME
Claude
Failed to find target with hash string 'android-36'
La plataforma del SDK para compileSdk no está instalada
Instálala en el SDK Manager o con sdkmanager "platforms;android-36"
Claude o tú
Dependency '…' requires libraries and applications that depend on it to compile against version 36 or later
Se actualizó una librería por encima del compileSdk del proyecto
Deshaz la actualización de la librería, o sube compileSdk de forma deliberada y prueba
Claude
No matching client found for package name 'com.example.app'
google-services.json sigue perteneciendo al paquete antiguo tras un cambio de nombre
Registra el nuevo paquete en Firebase, descarga un nuevo google-services.json y sustituye el de app/
Tú (Firebase), Claude (archivo)
Keystore was tampered with, or password was incorrect
Contraseña del almacén incorrecta o archivo de keystore equivocado
Revisa tú mismo keystore.properties; nunca pegues contraseñas en el chat
Tú
Play Console: Your Android App Bundle is signed with the wrong key
Firmado con una clave distinta de la clave de subida que espera Google Play
Compara las huellas SHA-1 con keytool -list -v -keystore your.jks; encuentra el keystore correcto o solicita un restablecimiento de la clave de subida en la Play Console
Tú
Play Console: Version code … has already been used
No se incrementó versionCode
Incrementa versionCode en app/build.gradle
Claude
Play Console: You uploaded a debuggable APK or Android App Bundle
Se subió una compilación de depuración
Compila con bundleRelease y sube el .aab de app/build/outputs/bundle/release/
Claude
Play Console: error de nivel de API objetivo
targetSdk está por debajo del requisito actual de Google
Consulta la sección sobre targetSdk más abajo
Claude y tú
Mi WebView de iOS finalmente está aprobada. ¡Gracias!
Cambiar el nombre del paquete sin romper la compilación
WebViewGold para Android viene con el nombre de paquete com.webviewgold.myappname, y la documentación de publicación te pide hacer una copia de seguridad del proyecto y cambiarlo antes de la primera subida (con un video para el cambio de nombre completo y otro para acortar el nombre). Hay tres identificadores implicados, y los agentes tienden a cambiar solo uno:
applicationId en app/build.gradle: la identidad en Google Play. Debe ser único y nunca puede cambiar después de la primera subida; consulta elígelo una sola vez.
namespace: el paquete de las clases generadas R y BuildConfig.
El paquete Java de las carpetas de código fuente y la línea package al principio de cada archivo.
Cambia el nombre con la refactorización que muestra el video y luego deja que Claude Code busque restos con grep -rn "com.webviewgold.myappname" app/. Actualiza todo lo que deba seguir al nuevo nombre, incluido google-services.json para Firebase y, si usas App Links, el nombre del paquete en tu assetlinks.json. Ese archivo también contiene una huella SHA-256: con Play App Signing, usa la huella de la clave de firma de la app que muestra la Play Console, no la de tu clave de subida.
Mantén la firma fuera del repositorio
Si configuras la firma de release desde cero, este es el patrón estándar de Android: los valores de firma salen de un archivo keystore.properties que solo existe en tu máquina. Haz de esto un cambio único y revisado (escríbelo tú o deja que Claude lo añada una vez), crea tú el keystore y el archivo de propiedades y mantén los dos fuera de Git. Si tu proyecto ya tiene un bloque signingConfigs que funciona, no lo toques.
groovy
// app/build.gradle (excerpt, merge into the existing file)
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
release {
if (keystorePropertiesFile.exists()) {
storeFile file(keystoreProperties["storeFile"])
storePassword keystoreProperties["storePassword"]
keyAlias keystoreProperties["keyAlias"]
keyPassword keystoreProperties["keyPassword"]
}
}
}
buildTypes {
release {
// keep the template's existing release options, add only this line
signingConfig signingConfigs.release
}
}
}
// keystore.properties lives next to settings.gradle and is NOT committed
// (add keystore.properties, *.jks and *.keystore to .gitignore):
// storeFile=/Users/you/keys/example-upload.jks
// storePassword=...
// keyAlias=upload
// keyPassword=...
El ciclo de reparación
Primero el entorno, después el proyecto y la firma al final.
Prepara la máquina
Instala Android Studio y abre el proyecto una vez para que descargue el SDK y cree local.properties. Después inicia Claude Code en la carpeta que contiene gradlew.
Diagnostica
Pega el prompt de abajo. Claude recopila las versiones, ejecuta una compilación de depuración con --stacktrace y nombra el primer error real.
Arregla el entorno
El JDK, la ruta del SDK y las plataformas del SDK que faltan van primero. Estas correcciones no cambian ni un solo archivo del proyecto.
Arregla el proyecto, lo mínimo
Si un cambio en el proyecto es inevitable, el agente propone el cambio de versión compatible más pequeño y espera tu OK. Haz un commit aparte para que sea fácil revertirlo.
Compila el bundle de release
Ejecuta ./gradlew bundleRelease con tu keystore en su sitio, o compílalo en Android Studio desde Build, Generate Signed App Bundle.
Sube primero a pruebas internas
Pega cualquier error de la Play Console en Claude Code. Las cuentas de desarrollador personales nuevas también necesitan una prueba cerrada antes de producción; consulta el requisito de 12 testers.
El prompt de diagnóstico
El punto 5 es el importante: el agente nunca necesita tu keystore ni tus contraseñas para arreglar una compilación.
Pégalo en Claude Code en la carpeta del proyecto Android
Esta carpeta es un proyecto Android de WebViewGold (contiene gradlew). La compilación falla. Haz un diagnóstico antes de cambiar nada.
1. Ejecuta ./gradlew --version y java -version, muestra JAVA_HOME y enséñame: distributionUrl de gradle/wrapper/gradle-wrapper.properties, la versión del Android Gradle plugin, compileSdk, targetSdk, minSdk, applicationId, namespace, versionCode y versionName.
2. Ejecuta ./gradlew assembleDebug --stacktrace y guarda la salida en build-debug.log.
3. Cita el primer error real y explica la causa. Di si es un problema del entorno (JDK, ubicación del SDK, plataforma del SDK que falta) o un problema del proyecto.
4. Da prioridad a las correcciones del entorno. No actualices el Android Gradle plugin, Gradle, Kotlin ni ninguna dependencia salvo que el error lo haga inevitable; en ese caso, propón el cambio compatible más pequeño y espera mi OK.
5. Nunca abras, muestres ni cambies archivos de keystore, keystore.properties, contraseñas ni el bloque signingConfigs.
6. Cuando la compilación de depuración pase, dame el comando para el bundle de release y enumera los valores que comprobará Google Play: targetSdk frente al requisito actual y versionCode frente a mi última subida.
Errores habituales
Pulsar "Upgrade" en cada aviso de Android Studio. El AGP Upgrade Assistant es útil entre versiones, no en mitad de una.
Subir con commit archivos de tu máquina.local.properties contiene la ruta de tu SDK y los keystores contienen tu identidad de publicación. Los dos van en .gitignore.
Perder la clave de subida. Con Play App Signing, Google guarda la clave de firma de la app y puedes solicitar un restablecimiento de la clave de subida. Sin copia de seguridad y sin Play App Signing, no puedes actualizar la app. Guarda hoy mismo una copia del keystore y sus contraseñas en un gestor de contraseñas.
Buscar y reemplazar para cambiar el paquete. Reemplazar texto en todo el proyecto, carpetas de compilación incluidas, produce errores que parecen no tener relación. Cambia el nombre con el IDE y luego busca restos.
Cambiar applicationId después de la primera subida. Google Play lo trata como una app distinta, sin instalaciones, sin valoraciones y sin forma de actualizar.
Esperar que una sesión en la nube compile Android. Claude Code en la web se ejecuta en una VM Linux con OpenJDK 21 y Gradle, pero sin el Android SDK, así que puede editar el proyecto pero no compilarlo sin configuración adicional. Compila en local o con el Cloud Builder.
Lista de comprobación antes de subir
HOST y HOME_URL en Config.java apuntan al dominio de producción.
applicationId es definitivo y coincide con la app de la Play Console.
versionCode incrementado y versionName definido.
targetSdk cumple el requisito actual de Google Play.
google-services.json coincide con el paquete, si usas Firebase.
Firmado con la clave de subida cuyo SHA-1 muestra la Play Console.
Subes un archivo .aab, no un APK.
assetlinks.json contiene el paquete y el SHA-256 de la firma de apps de Play, si usas App Links.
Preguntas frecuentes
¿Qué JDK debe usar el proyecto Android de WebViewGold?
El JDK incluido con Android Studio es la opción segura por defecto, porque es el que usa el IDE para Gradle. AGP 8 y posteriores necesitan como mínimo JDK 17; usa el mismo JDK en la terminal apuntando JAVA_HOME a él.
¿Por qué la compilación funciona en Android Studio pero no en Claude Code?
Casi siempre por un JDK distinto o por una ruta del SDK que falta en la terminal. Compara la salida de ./gradlew --version en ambos sitios y ajusta JAVA_HOME y sdk.dir en consecuencia.
He perdido mi keystore. ¿Puede Claude Code recuperarlo?
Nadie puede recuperar una clave perdida. Si tu app usa Play App Signing, solicita un restablecimiento de la clave de subida en la Play Console y crea una nueva clave de subida. Sin Play App Signing, una clave perdida significa una ficha de app nueva.
¿Tengo que actualizar WebViewGold por un nuevo requisito de targetSdk?
No es estrictamente necesario, pero suele ser el camino de menor riesgo, porque el proyecto actual ya usa versiones compatibles de Gradle y del plugin. Las actualizaciones son gratuitas y Claude Code puede trasladar tus ajustes.
¿Puedo compilar la app de Android sin Android Studio?
Sí. Con las herramientas de línea de comandos del Android SDK instaladas, ./gradlew bundleRelease compila desde la terminal. Sin ninguna configuración local, el Cloud Builder compila y sube la app desde el navegador.
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.
Sin Mac, sin Xcode, sin Android Studio: configura en el navegador, compilamos ambas apps en la nube y las entregamos a App Store Connect y a Play Console.
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.
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.