Makepad打包与部署Skill makepad-deployment

此技能用于Makepad应用程序的跨平台打包和部署,支持桌面(Linux/Windows/macOS)、移动(Android/iOS)和Web平台。它涵盖使用cargo-packager和cargo-makepad工具进行打包,并集成了CI/CD流程如GitHub Actions。关键词:Makepad, 打包, 部署, Rust, 跨平台, CI/CD, cargo-packager, cargo-makepad, 应用程序分发, GitHub Actions, 自动化部署。

DevOps 0 次安装 0 次浏览 更新于 3/13/2026

名称:makepad-deployment 描述: | 关键:用于Makepad打包和部署。触发词: deploy, package, APK, IPA, 打包, 部署, cargo-packager, cargo-makepad, WASM, Android, iOS, distribution, installer, .deb, .dmg, .nsis, GitHub Actions, CI, action, marketplace

Makepad打包与部署

此技能涵盖为所有支持的平台打包Makepad应用程序。

快速导航

平台 工具 输出
桌面 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资产

GitHub Actions打包

使用makepad-packaging-action在CI中打包Makepad应用程序。它包装了 cargo-packager(桌面)和cargo-makepad(移动),并可以将工件上传到GitHub Releases。

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

注意事项:

  • 桌面包必须在匹配的操作系统runner上运行(Linux/Windows/macOS)。
  • iOS构建需要macOS runner。
  • Android构建可以在任何操作系统runner上运行。

完整的输入/环境/输出和发布工作流见 references/makepad-packaging-action.md

桌面打包

桌面打包使用cargo-packagerrobius-packaging-commands处理资源。

安装工具

# 安装cargo-packager
cargo install cargo-packager --locked

# 安装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

配置Cargo.toml

将打包配置添加到您的Cargo.toml

[package.metadata.packager]
product_name = "YourAppName"
identifier = "com.yourcompany.yourapp"
authors = ["Your Name or Team"]
description = "A brief description of your Makepad application"
# 注意:long_description每行最多80个字符
long_description = """
Your detailed description here.
Keep each line under 80 characters.
"""
icons = ["./assets/icon.png"]
out_dir = "./dist"

# 打包前命令收集资源
before-packaging-command = """
robius-packaging-commands before-packaging \
    --force-makepad \
    --binary-name your-app \
    --path-to-binary ./target/release/your-app
"""

# 包含在包中的资源
resources = [
    # Makepad内置资源(必需)
    { 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/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
"""

Linux (Debian/Ubuntu)

# 安装依赖
sudo apt-get update
sudo apt-get install libssl-dev libsqlite3-dev pkg-config \
    binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev

# 构建包
cargo packager --release

输出:.deb文件在./dist/

Windows

# 构建NSIS安装程序
cargo packager --release --formats nsis

输出:.exe安装程序在./dist/

macOS

# 构建包
cargo packager --release

输出:.dmg文件在./dist/

平台特定配置

# 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"
# 可选:用于分发的签名身份
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",
]

移动打包

移动平台使用cargo-makepad进行构建和打包。

安装cargo-makepad

cargo install --force --git https://github.com/makepad/makepad.git \
    --branch dev cargo-makepad

Android

# 安装Android工具链
cargo makepad android install-toolchain

# 完整NDK(推荐以获得完全支持)
cargo makepad android install-toolchain --full-ndk

# 构建APK
cargo makepad android build -p your-app --release

输出:.apk./target/makepad-android-app/

在设备/模拟器上运行:

cargo makepad android run -p your-app --release

iOS

# 安装iOS工具链
cargo makepad apple ios install-toolchain

iOS模拟器:

cargo makepad apple ios \
    --org=com.yourcompany \
    --app=YourApp \
    run-sim -p your-app --release

输出:.app./target/makepad-apple-app/aarch64-apple-ios-sim/release/

iOS设备(需要配置):

首先,在Xcode中创建一个空应用程序,并匹配org/app名称以生成配置配置文件。

cargo makepad apple ios \
    --org=com.yourcompany \
    --app=YourApp \
    --profile=$YOUR_PROFILE_PATH \
    --cert=$YOUR_CERT_FINGERPRINT \
    --device=iPhone \
    run-device -p your-app --release

输出:.app./target/makepad-apple-app/aarch64-apple-ios/release/

创建IPA用于分发:

cd ./target/makepad-apple-app/aarch64-apple-ios/release
mkdir Payload
cp -r your-app.app Payload/
zip -r your-app-ios.ipa Payload

Wasm打包

为Web浏览器构建您的Makepad应用程序。

# 安装Wasm工具链
cargo makepad wasm install-toolchain

# 构建和运行
cargo makepad wasm run -p your-app --release

输出在./target/makepad-wasm-app/release/your-app/中:

  • index.html - 入口点
  • *.wasm - WebAssembly模块
  • *.js - JavaScript桥接
  • resources/ - 静态资产

本地服务:

cd ./target/makepad-wasm-app/release/your-app
python3 -m http.server 8080
# 打开http://localhost:8080

完整的Cargo.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"]

快速参考

任务 命令
安装桌面打包器 cargo install cargo-packager --locked
安装资源助手 cargo install --version 0.2.1 --locked --git https://github.com/project-robius/robius-packaging-commands.git robius-packaging-commands
安装移动打包器 cargo install --force --git https://github.com/makepad/makepad.git --branch dev cargo-makepad
GitHub Actions打包 uses: Project-Robius-China/makepad-packaging-action@v1
Linux打包 cargo packager --release
Windows打包 cargo packager --release --formats nsis
macOS打包 cargo packager --release
构建Android APK cargo makepad android build -p app --release
构建iOS(模拟器) cargo makepad apple ios --org=x --app=y run-sim -p app --release
构建iOS(设备) cargo makepad apple ios --org=x --app=y --profile=... --cert=... run-device -p app --release
构建Wasm cargo makepad wasm run -p app --release

故障排除

缺少资源

如果应用程序因缺少资源而崩溃:

  1. 检查Cargo.toml中的resources数组是否包含所有Makepad资源
  2. 验证before-packaging-command成功运行
  3. 检查./dist/resources/是否包含预期文件

iOS配置

对于iOS设备部署:

  1. 在Xcode中创建具有相同org/app标识符的空应用程序
  2. 在物理设备上运行一次以生成配置配置文件
  3. 记下配置文件路径、证书指纹
  4. 使用--profile--cert--device标志

Android SDK问题

# 重新安装工具链并包含完整NDK
cargo makepad android install-toolchain --full-ndk

参考文件

  • references/platform-troubleshooting.md - 平台特定部署问题
  • references/makepad-packaging-action.md - GitHub Actions打包参考
  • community/dora-studio-package-workflow.md - Dora Studio CI打包示例

外部参考