Docs ▸ Platforms
iOS and Android
npx gameshipper init --bundle-id com.yourname.yourgame # or set "mobile": { "bundleId": … } and add "ios", "android" to "targets"
npx gameshipper build --target ios,androidout/ios is an Xcode project (open out/ios/App/App.xcodeproj) and out/android an Android Studio project, generated with Capacitor 8 from the same game files as the desktop builds, with your icon, a splash screen, version (build number: 1.2.3 becomes 1002003) and mobile.orientation. Both folders are self-contained, so you can move, zip or commit them, and both can be generated on any computer; archiving for the App Store needs a Mac with Xcode. The iOS project needs iOS 16.4 or newer (for import maps) and downloads Capacitor's Swift package from GitHub the first time Xcode builds it. Signing and uploading are done in Xcode and Android Studio. build regenerates both folders, so don't edit them by hand; the signing team you pick in Xcode is kept.
A game whose page has no <meta name="viewport"> gets one. A build with the mobile targets checks the bundle ID and version before it builds anything, and stops with exit code 2: BUNDLE_ID_REQUIRED without a bundle ID, BUNDLE_ID_INVALID for one the stores won't take (a Java keyword such as new, which Android can't use, or Apple's own com.apple. prefix), and VERSION_UNSUPPORTED for a version that can't be a build number (a minor or patch of 1000 or more, or past 2100.0.0, Google Play's limit).
Coming in later versions
Building, signing and uploading the iOS and Android apps themselves (Gameshipper makes the projects; Xcode and Android Studio do the rest).