Package and Deploy Makepad Applications
Skill for packaging Makepad apps across desktop, Android, iOS, and Wasm, plus GitHub Actions CI packaging.
Why it matters
Automate the packaging and deployment of Makepad applications across desktop, mobile, and web platforms. This asset streamlines the build process for various targets including installers, APKs, IPAs, and WebAssembly.
Outcomes
What it gets done
Package Makepad apps for desktop (deb, nsis, dmg).
Build Android APKs and iOS IPAs.
Generate WebAssembly output for web deployment.
Integrate packaging into GitHub Actions CI/CD pipelines.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/ag-makepad-deployment | bash Overview
Makepad Packaging & Deployment
A deployment skill covering Makepad application packaging for desktop (cargo-packager: .deb/NSIS/.dmg), mobile (cargo-makepad: APK/IPA), Wasm, and GitHub Actions CI release pipelines, with configuration examples and troubleshooting. Use when packaging, distributing, or automating release of a Makepad app for any platform. Scoped to packaging/deployment, not UI authoring - see sibling Makepad skills for layout, animation, or shaders.
What it does
Makepad Packaging & Deployment covers packaging Makepad Rust UI applications for every supported platform - desktop installers, mobile APK/IPA builds, WebAssembly output, and CI-based release artifacts - using cargo-packager for desktop, cargo-makepad for mobile/Wasm, and a dedicated makepad-packaging-action for GitHub Actions.
For CI, makepad-packaging-action wraps both cargo-packager and cargo-makepad and can upload artifacts directly to GitHub Releases, with the constraint that desktop packages need matching OS runners, iOS builds require macOS runners, and Android builds can run on any OS runner.
jobs:
package:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: Project-Robius-China/makepad-packaging-action@v1
with:
args: --target x86_64-unknown-linux-gnu --release
Desktop packaging installs cargo-packager and robius-packaging-commands (a resource-collection helper), then configures a [package.metadata.packager] block in Cargo.toml with product metadata, icons, a before-packaging-command that gathers required Makepad resources (built-in font/widget resources plus app-specific ones), and per-platform output config: Linux produces a .deb via apt-get-installed system libraries, Windows produces an NSIS .exe installer, and macOS produces a .dmg with optional code-signing identity, minimum OS version, entitlements, and DMG window/icon layout configuration.
Mobile packaging uses cargo-makepad, installed directly from the makepad GitHub repo's dev branch. Android needs its toolchain installed (optionally with --full-ndk) before cargo makepad android build produces an .apk, runnable directly on device/emulator. iOS needs its toolchain installed separately for simulator versus device builds - device builds require first creating a matching empty app in Xcode to generate a provisioning profile, then passing --profile, --cert, and --device flags; a manual Payload/ zip step converts the built .app into a distributable .ipa. Wasm packaging installs its own toolchain and outputs an index.html, .wasm module, JS bridge, and static resources directory, servable locally via python3 -m http.server.
A complete example Cargo.toml demonstrates release build profiles (including a distribution profile with fat LTO and single codegen unit) alongside the full packager metadata block. A troubleshooting section covers three common failures: missing-resources crashes (check the resources array and that before-packaging-command ran successfully), iOS provisioning setup (create a matching Xcode app, run once on a physical device, note the profile path and cert fingerprint), and Android SDK toolchain issues (reinstall with --full-ndk).
When to use - and when NOT to
Use this skill when packaging, distributing, or automating deployment of a Makepad application, or when the task involves desktop installers, APK/IPA builds, WebAssembly output, or CI-based release artifacts using cargo-packager, cargo-makepad, or GitHub Actions packaging flows.
It is scoped to packaging and deployment specifically, not Makepad's UI/animation/layout/shader authoring covered by sibling Makepad skills. It is not a substitute for environment-specific validation, testing, or expert review of the resulting release artifacts.
Inputs and outputs
Inputs: a built Makepad application and a target platform (Linux/Windows/macOS/Android/iOS/Web) or CI packaging requirement.
Outputs: a platform-native installer or package (.deb, .exe/NSIS, .dmg, .apk, .app/.ipa, or Wasm bundle), or a configured CI workflow that produces and uploads these artifacts to GitHub Releases.
Integrations
Uses cargo-packager, robius-packaging-commands, cargo-makepad, and the makepad-packaging-action GitHub Action; part of the Makepad skill family alongside basics, DSL, layout, animation, event/action, font, shader, and reference skills.
Who it's for
Makepad developers who need to package and ship a Rust UI application across desktop, mobile, and web platforms, including CI-automated release pipelines.
FAQ
Common questions
Discussion
Questions & comments ยท 0
Sign In Sign in to leave a comment.