This page was machine-translated from Portuguese and may contain errors. The Portuguese version is canonical.
iOS / iPadOS (RoboVM) 🍎
The iOS target requires macOS + Xcode. The RoboVM toolchain does AOT (Java → native ARM code).
Run
gradlew :ios:launchIPhoneSimulator
The IOSLauncher creates the application: new IOSApplication(new Main(true, getCommandline()), configuration).
Device.platform will be IPHONE or IPAD.
Info.plist — permissions and metadata
Unlike Android (runtime permission), on iOS the usage keys go in the Info.plist:
- usage descriptions for camera, location, Bluetooth, microphone (mandatory, otherwise the app is rejected);
- icons and launch screen.
⚠️ Sensitive points
WKWebView:evaluateJavaScriptis restricted — the JS↔Java bridge ofWebContaineris more limited than on Android/desktop.- Apple developer account + provisioning profile are required to run on a real device (the simulator does not require them).
- AOT builds are slow — one more reason to develop on the desktop and only validate on iOS.
Best practices
- Fill in all the usage keys in the
Info.plistbefore submitting (rejection is common for this). - Test on the simulator early; leave the real device for final validation (provisioning).
Common mistakes
- Missing a usage key in the
Info.plist(crash when accessing the feature, or App Store rejection). - Assuming full
evaluateJavaScriptinWKWebView(it is restricted).
See also
Was this page helpful?Thanks for the feedback!