This page was machine-translated from Portuguese and may contain errors. The Portuguese version is canonical.
Platform-specific
Behavior that only breaks on one target. Format: symptom → cause → fix.
Android: content under the status bar
Cause: difY offset / status bar height not applied.
Fix: respect DeviceConfig.statusbarHeight in the top layout.
(Android)
Virtual keyboard covers the focused field
Cause: the field isn’t repositioned when the keyboard comes up.
Fix: adjust dependent on Device.keyboardShift/keyboardHeight.
(Ch. 6 — Events and Input)
iOS: build fails (RoboVM)
Cause: toolchain/signing (macOS+Xcode, provisioning). Fix: check the iOS launcher and the certificate/provisioning. (iOS)
Device permissions denied (camera/GPS/storage)
Cause: permission not granted / not declared.
Fix: check DeviceConfig.cameraAllowed/storageAllowed and declare it in
AndroidManifest.xml/Info.plist; request it at runtime before bringing up the UI (delayed start on Android).
(Ch. 24)
Bluetooth “does nothing”
Cause: in core, parts of BLE are a skeleton over a cache — the real radio lives in the platform launchers. Fix: test on a real device; confirm the target platform’s implementation. (Bluetooth BLE)
FilePicker / IWebView have no effect (or WebContainer on web)
Cause: skeletons/no concrete implementation on some targets; on web createWebView() returns
null.
Fix: check != null/Device.platform and use an alternative (files in Device.homeFolder;
PlatformUtils.instance.view(url) on web). (Native integration)
Colors/rendering differ across platforms
Cause: usually Screen.scale/density.
Fix: use logical pixels and Relative, never Gdx.graphics as a size reference.
(Responsiveness)