Install any skill in seconds. Free to start, no credit card required.
Get Started Free →CRITICAL: Use for Makepad packaging and deployment. Triggers on: deploy, package, APK, IPA, 打包, 部署, cargo-packager, cargo-makepad, WASM, Android, iOS, distribution, installer, .deb, .dmg, .nsis, GitHub Actions, CI, action, marketplace
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 88% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 196% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 295% | 0% |
This skill covers packaging Makepad applications for all supported platforms.
cargo-packager, cargo-makepad, or GitHub Actions packaging flows for Makepad.| Platform | Tool | Output | |----------|------|--------| | Desktop | cargo-packager | .deb, .nsis, .dmg | | Android | cargo-makepad | .apk | | iOS | cargo-makepad | .app, .ipa | | Web | cargo-makepad | Wasm + HTML/JS | | CI/CD | makepad-packaging-action | GitHub Release assets |
Use makepad-packaging-action to package Makepad apps in CI. It wraps cargo-packager (desktop) and cargo-makepad (mobile), and can upload artifacts to GitHub Releases.
yamljobs: 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
Notes:
Full inputs/env/outputs and release workflows live in references/makepad-packaging-action.md.
Desktop packaging uses cargo-packager with robius-packaging-commands for resource handling.
bash# Install cargo-packager cargo install cargo-packager --locked # Install robius-packaging-commands (v0.2.1) cargo install --version 0.2.1 --locked \ --git https://github.com/project-robius/robius-packaging-commands.git \ robius-packaging-commands
Add packaging configuration to your Cargo.toml:
toml[package.metadata.packager] product_name = "YourAppName" identifier = "com.yourcompany.yourapp" authors = ["Your Name or Team"] description = "A brief description of your Makepad application" # Note: long_description has 80 character max per line long_description = """ Your detailed description here. Keep each line under 80 characters. """ icons = ["./assets/icon.png"] out_dir = "./dist" # Pre-packaging command to collect resources before-packaging-command = """ robius-packaging-commands before-packaging \ --force-makepad \ --binary-name your-app \ --path-to-binary ./target/release/your-app """ # Resources to include in package resources = [ # Makepad built-in resources (required) { src = "./dist/resources/makepad_widgets", target = "makepad_widgets" }, { src = "./dist/resources/makepad_fonts_chinese_bold", target = "makepad_fonts_chinese_bold" }, { src = "./dist/resources/makepad_fonts_chinese_bold_2", target = "makepad_fonts_chinese_bold_2" }, { src = "./dist/resources/makepad_fonts_chinese_regular", target = "makepad_fonts_chinese_regular" }, { src = "./dist/resources/makepad_fonts_chinese_regular_2", target = "makepad_fonts_chinese_regular_2" }, { src = "./dist/resources/makepad_fonts_emoji", target = "makepad_fonts_emoji" }, # Your app resources { src = "./dist/resources/your_app_resource", target = "your_app_resource" }, ] before-each-package-command = """ robius-packaging-commands before-each-package \ --force-makepad \ --binary-name your-app \ --path-to-binary ./target/release/your-app """
bash# Install dependencies sudo apt-get update sudo apt-get install libssl-dev libsqlite3-dev pkg-config \ binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev # Build package cargo packager --release
Output: .deb file in ./dist/
bash# Build NSIS installer cargo packager --release --formats nsis
Output: .exe installer in ./dist/
bash# Build package cargo packager --release
Output: .dmg file in ./dist/
toml# Linux (Debian) [package.metadata.packager.deb] depends = "./dist/depends_deb.txt" desktop_template = "./packaging/your-app.desktop" section = "utils" # macOS [package.metadata.packager.macos] minimum_system_version = "11.0" frameworks = [] info_plist_path = "./packaging/Info.plist" entitlements = "./packaging/Entitlements.plist" # Optional: signing identity for distribution signing_identity = "Developer ID Application: Your Name (XXXXXXXXXX)" # macOS DMG [package.metadata.packager.dmg] background = "./packaging/dmg_background.png" window_size = { width = 960, height = 540 } app_position = { x = 200, y = 250 } application_folder_position = { x = 760, y = 250 } # Windows NSIS [package.metadata.packager.nsis] appdata_paths = [ "$APPDATA/$PUBLISHER/$PRODUCTNAME", "$LOCALAPPDATA/$PRODUCTNAME", ]
Mobile platforms use cargo-makepad for building and packaging.
bashcargo install --force --git https://github.com/makepad/makepad.git \ --branch dev cargo-makepad
bash# Install Android toolchain cargo makepad android install-toolchain # Full NDK (recommended for complete support) cargo makepad android install-toolchain --full-ndk # Build APK cargo makepad android build -p your-app --release
Output: .apk in ./target/makepad-android-app/
Run on device/emulator:
bashcargo makepad android run -p your-app --release
bash# Install iOS toolchain cargo makepad apple ios install-toolchain
iOS Simulator:
bashcargo makepad apple ios \ --org=com.yourcompany \ --app=YourApp \ run-sim -p your-app --release
Output: .app in ./target/makepad-apple-app/aarch64-apple-ios-sim/release/
iOS Device (requires provisioning):
First, create an empty app in Xcode with matching org/app names to generate provisioning profile.
bashcargo makepad apple ios \ --org=com.yourcompany \ --app=YourApp \ --profile=$YOUR_PROFILE_PATH \ --cert=$YOUR_CERT_FINGERPRINT \ --device=iPhone \ run-device -p your-app --release
Output: .app in ./target/makepad-apple-app/aarch64-apple-ios/release/
Create IPA for distribution:
bashcd ./target/makepad-apple-app/aarch64-apple-ios/release mkdir Payload cp -r your-app.app Payload/ zip -r your-app-ios.ipa Payload
Build your Makepad app for web browsers.
bash# Install Wasm toolchain cargo makepad wasm install-toolchain # Build and run cargo makepad wasm run -p your-app --release
Output in ./target/makepad-wasm-app/release/your-app/:
index.html - Entry point*.wasm - WebAssembly module*.js - JavaScript bridgeresources/ - Static assetsServe locally:
bashcd ./target/makepad-wasm-app/release/your-app python3 -m http.server 8080 # Open http://localhost:8080
toml[package] name = "my-makepad-app" version = "1.0.0" edition = "2024" [dependencies] makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "dev" } [profile.release] opt-level = 3 [profile.release-lto] inherits = "release" lto = "thin" [profile.distribution] inherits = "release" codegen-units = 1 lto = "fat" [package.metadata.packager] product_name = "My Makepad App" identifier = "com.example.mymakepadapp" authors = ["Your Name <you@example.com>"] description = "A cross-platform Makepad application" long_description = """ My Makepad App is a cross-platform application built with the Makepad UI framework in Rust. It runs on desktop, mobile, and web platforms. """ icons = ["./packaging/icon.png"] out_dir = "./dist" before-packaging-command = """ robius-packaging-commands before-packaging \ --force-makepad \ --binary-name my-makepad-app \ --path-to-binary ./target/release/my-makepad-app """ resources = [ { src = "./dist/resources/makepad_widgets", target = "makepad_widgets" }, { src = "./dist/resources/makepad_fonts_chinese_bold", target = "makepad_fonts_chinese_bold" }, { src = "./dist/resources/makepad_fonts_chinese_bold_2", target = "makepad_fonts_chinese_bold_2" }, { src = "./dist/resources/makepad_fonts_chinese_regular", target = "makepad_fonts_chinese_regular" }, { src = "./dist/resources/makepad_fonts_chinese_regular_2", target = "makepad_fonts_chinese_regular_2" }, { src = "./dist/resources/makepad_fonts_emoji", target = "makepad_fonts_emoji" }, { src = "./dist/resources/my-makepad-app", target = "my-makepad-app" }, ] before-each-package-command = """ robius-packaging-commands before-each-package \ --force-makepad \ --binary-name my-makepad-app \ --path-to-binary ./target/release/my-makepad-app """ [package.metadata.packager.deb] depends = "./dist/depends_deb.txt" section = "utils" [package.metadata.packager.macos] minimum_system_version = "11.0" [package.metadata.packager.nsis] appdata_paths = ["$LOCALAPPDATA/$PRODUCTNAME"]
| Task | Command | |------|---------| | Install desktop packager | cargo install cargo-packager --locked | | Install resource helper | cargo install --version 0.2.1 --locked --git https://github.com/project-robius/robius-packaging-commands.git robius-packaging-commands | | Install mobile packager | cargo install --force --git https://github.com/makepad/makepad.git --branch dev cargo-makepad | | GitHub Actions packaging | uses: Project-Robius-China/makepad-packaging-action@v1 | | Package for Linux | cargo packager --release | | Package for Windows | cargo packager --release --formats nsis | | Package for macOS | cargo packager --release | | Build Android APK | cargo makepad android build -p app --release | | Build iOS (Simulator) | cargo makepad apple ios --org=x --app=y run-sim -p app --release | | Build iOS (Device) | cargo makepad apple ios --org=x --app=y --profile=... --cert=... run-device -p app --release | | Build Wasm | cargo makepad wasm run -p app --release |
If app crashes with missing resources:
resources array in Cargo.toml includes all Makepad resourcesbefore-packaging-command runs successfully./dist/resources/ contains expected filesFor iOS device deployment:
--profile, --cert, --device flagsbash# Reinstall toolchain with full NDK cargo makepad android install-toolchain --full-ndk
references/platform-troubleshooting.md - Platform-specific deployment issuesreferences/makepad-packaging-action.md - GitHub Actions packaging referencecommunity/dora-studio-package-workflow.md - Dora Studio CI packaging exampleOther measured skills in the registry, with their headline benchmark lift.