# Específicos por plataforma

> "Funciona en escritorio, se rompe en el móvil" — status bar, teclado, permisos, BLE stub, densidad.

Source: https://crossfly.dev/es/docs/troubleshooting/platform-specific — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Específicos por plataforma

Comportamiento que solo se rompe en un target. Formato: **síntoma → causa → corrección**.

## Android: contenido bajo la status bar
**Causa:** desplazamiento `difY` / altura de la status bar no aplicado.
**Corrección:** respeta `DeviceConfig.statusbarHeight` en el layout superior.
([Android](/docs/platforms/android))

## El teclado virtual cubre el campo enfocado
**Causa:** el campo no se reposiciona cuando el teclado sube.
**Corrección:** ajuste dependiente de `Device.keyboardShift`/`keyboardHeight`.
(Cap. 6 — Eventos y Entrada)

## iOS: el build falla (RoboVM)
**Causa:** toolchain/firma (macOS+Xcode, provisioning).
**Corrección:** revisa el launcher iOS y el certificado/provisioning. ([iOS](/docs/platforms/ios))

## Permisos de dispositivo denegados (cámara/GPS/almacenamiento)
**Causa:** permiso no concedido / no declarado.
**Corrección:** revisa `DeviceConfig.cameraAllowed`/`storageAllowed` y decláralo en el
`AndroidManifest.xml`/`Info.plist`; pídelo en runtime **antes** de mostrar la UI (inicio retrasado en Android).
(Cap. 24)

## Bluetooth "no hace nada"
**Causa:** en el **core**, partes del BLE son **esqueleto sobre caché** — la radio real vive en los launchers de
plataforma.
**Corrección:** prueba en **dispositivo real**; confirma la implementación de la plataforma objetivo.
([Bluetooth BLE](/docs/data-and-services/device-bluetooth-ble))

## `FilePicker` / `IWebView` sin efecto (o `WebContainer` en web)
**Causa:** esqueletos/sin implementación concreta en algunos targets; en **web** `createWebView()` retorna
`null`.
**Corrección:** revisa `!= null`/`Device.platform` y usa una alternativa (archivos en `Device.homeFolder`;
`PlatformUtils.instance.view(url)` en web). ([Integración nativa](/docs/platforms/native-integration))

## Colores/render divergen entre plataformas
**Causa:** normalmente `Screen.scale`/densidad.
**Corrección:** usa **píxeles lógicos** y `Relative`, nunca `Gdx.graphics` como referencia de tamaño.
([Responsividad](/docs/best-practices/responsividade))

## Ver también
- [Build y Gradle](/docs/troubleshooting/build-gradle) · [Matriz de plataformas](/docs/platforms/overview)
