This page was machine-translated from Portuguese and may contain errors. The Portuguese version is canonical.
Build, signing and distribution 🖥️🤖🍎🌐
The end of the pipeline, per target. Each launcher has its own build.gradle; the toolchain is Java 17.
Tasks and artifacts per target
| Target | Build | mainClassName |
Artifact |
|---|---|---|---|
| 🖥️ Desktop | gradlew :lwjgl3:run (dev) / jar / installer |
dev.crossfly.lwjgl3.Lwjgl3Launcher |
jar / native installer |
| 🤖 Android | gradlew :android:installDebug / assembleRelease |
AndroidLauncher |
APK / AAB |
| 🍎 iOS | gradlew :ios:launchIPhoneSimulator / generate .ipa |
dev.crossfly.IOSLauncher |
.ipa |
| 🌐 Web | gradlew :web:webBundle (alias dist) |
dev.crossfly.web.WebLauncher |
static bundle |
Signing
| Target | Signing |
|---|---|
| 🤖 Android | keystore → signs the release .aab/APK |
| 🍎 iOS | certificate + provisioning profile → signs the .ipa |
| 🖥️ Desktop | installer signing per the OS (optional) |
| 🌐 Web | no signing — it is static content |
Distribution
- 🤖 Android → Google Play (AAB) or direct APK.
- 🍎 iOS → App Store / TestFlight (via Xcode/Transporter).
- 🖥️ Desktop → native installers (jpackage/jlink) or executable jar.
- 🌐 Web → host the contents of
web/build/webapp/on any static server.
Release checklist
- Tested on desktop and the real target (see Testing).
- Responsiveness validated on screens/densities (see Responsiveness).
- Permissions declared (Android
Manifest/ iOSInfo.plist). - Platform-unavailable features handled (see Matrix).
- Signing configured (keystore / provisioning).
- Icons, launch screen, version/build number.
- Store screenshots generated (
Main.getScreenShot(true).toPng(...)).
Prerequisites per target
- 🖥️ Desktop: JDK 17; on macOS,
-XstartOnFirstThread. - 🤖 Android: Android SDK + build tools.
- 🍎 iOS: macOS + Xcode + Apple developer account.
- 🌐 Web: static file server.
Common mistakes
- Submitting iOS without usage keys in the
Info.plist(rejection). - Publishing an APK when the Play Store requires an AAB.
- Hosting the web bundle without serving the
assets//assets.txtalongside it.
See also
Was this page helpful?Thanks for the feedback!