---
id: "59"
title: "init_kotlin_app genera gradlew stub no funcional"
status: completado
type: feature
domain: []
scope: app-scoped
priority: alta
depends: []
blocks: []
related: []
created: 2026-05-10
updated: 2026-05-17
tags: []
---

## Sintoma

Al scaffoldear app Kotlin con `fn run init_kotlin_app <name>`, el `gradlew` generado es un stub que delega a `gradle/wrapper/gradlew` (no existe) y luego a `gradle` system (no instalado). Resultado: silenciosamente falla.

## Reproducir

```bash
./fn run init_kotlin_app foo_app
cd apps/foo_app
./gradlew :app:assembleDebug
# (no output, exit silente)
```

## Causa

`bash/functions/pipelines/init_kotlin_app.sh` linea ~XXX genera placeholder gradlew. No descarga `gradle-wrapper.jar` real ni invoca `gradle wrapper --gradle-version 8.6`.

## Workaround actual

Copiar wrapper de otra app:
```bash
cp apps/voice_guide/frontend/android/gradle/wrapper/gradle-wrapper.jar <new_app>/gradle/wrapper/
cp apps/voice_guide/frontend/android/gradlew <new_app>/gradlew
chmod +x <new_app>/gradlew
```

## Fix propuesto

Una de:
- Descargar `gradle-wrapper.jar` desde `https://raw.githubusercontent.com/gradle/gradle/v8.6.0/gradle/wrapper/gradle-wrapper.jar` (~60KB) durante scaffold + escribir `gradlew` real (no stub).
- Vendor del wrapper jar en `bash/functions/pipelines/templates/kotlin/gradle-wrapper.jar` y copiar al scaffold.
- Detectar gradle system, invocar `gradle wrapper --gradle-version 8.6` post-mkdir.

Recomendado: vendor (option B) — sin dependencia de red en cada scaffold.

## Validacion

Tras fix, `./fn run init_kotlin_app smoke && cd apps/smoke && ./gradlew --version` debe imprimir Gradle 8.6 sin errores.
