Makepad 项目打包指南
打包 Makepad 项目的要求取决于目标平台。本指南提供了如何为不同平台(包括桌面和移动平台)打包 Makepad 应用程序的概述。
桌面打包
使用 cargo-packager
工具来打包您的 Makepad 应用程序。
在开始打包 Makepad 应用程序之前,请确保您已经安装了 cargo-packager 工具:
1cargo install cargo-packager --locked
此工具帮助您为 Makepad 应用程序创建包,包括为不同平台生成必要的文件和目录。
然后配置您的 Cargo.toml
文件以包含打包所需的元数据,您也可以创建一个 packager.toml
文件来指定其他打包选项。
本指南使用 Cargo.toml
作为示例,但您也可以使用 packager.toml
来指定打包选项。
1[package.metadata.packager]
2product_name = "YourAppName"
3identifier = "com.yourcompany.yourapp"
4authors = ["Your Name or Team name"]
5description = "A brief description of your Makepad application"
6### 注意:`long_description` 的每行最多 80 个字符。
7long_description = "..."
8icons = ["./assets/icon.png"]
9out_dir = "./dist"
10# ... 其他打包选项,请查看 cargo-packager 文档了解更多详情。
11
12before-packaging-command = """
13robius-packaging-commands before-packaging \
14 --force-makepad \
15 --binary-name <main-binary-name> \
16 --path-to-binary ./target/release/<main-binary-name>
17"""
18
19# 我们需要指定将包含在包中的资源,打包器将把它们复制到输出目录。
20resources = [
21 { src = "./dist/resources/makepad_widgets", target = "makepad_widgets" },
22 { src = "./dist/resources/your_app_name", target = "your_app_name" },
23]
24
25before-each-package-command = """
26robius-packaging-commands before-each-package \
27 --force-makepad \
28 --binary-name <main-binary-name> \
29 --path-to-binary ./target/release/<main-binary-name> \
30"""
我们使用小型的 robius-packaging-commands
CLI 工具在打包 Makepad 应用程序之前运行打包命令。
您可以使用以下命令安装 robius-packaging-commands
工具:
1cargo install --locked --git https://github.com/project-robius/robius-packaging-commands.git
如果您不想使用 robius-packaging-commands
工具,您也可以手动运行打包命令,但建议使用该工具以方便操作。
并手动将资源复制到输出目录。
例如:
1[package.metadata.packager]
2
3before-packaging-command = """
4cargo run --manifest-path packaging/before-packaging-command/Cargo.toml before-packaging
5"""
6
7before-each-package-command = """
8cargo run --manifest-path packaging/before-packaging-command/Cargo.toml before-each-package
9"""
before-packaging-command
以下命令主要使用 cargo-metadata 来确定主机构建系统上 makepad_widgets
crate 的路径,并将 makepad-widgets/resources
目录复制到 ./dist/resources/makepad_widgets
目录。
我们还将您的应用项目的 resources/
目录复制到 ./dist/resources/<main-binary-name>
目录。
这是必要的,因为 cargo packager
命令仅支持在已知路径定义资源(参见下面的 resources = [...]
块),所以我们需要在打包之前将资源复制到已知的固定(静态)路径,以便 cargo-packager 可以找到它们并将它们包含在最终包中。
before-each-package-command
然后我们构建整个应用项目,并将 MAKEPAD
/MAKEPAD_PACKAGE_DIR
环境变量设置为适当的值。
对于 macOS 应用程序包,这应该设置为 .
,因为我们为 Makepad 设置了 apple_bundle
cfg 选项,这使得 Makepad 在 Contents/Resources/
目录中查找资源,这是 Apple 应用程序包(.app
和 .dmg
)的资源位置。
对于 Debian .deb
包,这应该设置为 /usr/lib/<main-binary-name>
,目前是 /usr/lib/<main-binary-name>
。
这是 dpkg
在安装 .deb
包时将应用程序资源文件复制到的目录。
在 Linux 上,我们还会剥离二进制文件的不需要内容,这是 Debian 包的要求。
对于 Debian 和 Pacman(仍在待办事项中!)包,我们还会自动生成您的应用程序所需的依赖项列表。
了解更多关于 cargo-packager
的信息:https://github.com/crabnebula-dev/cargo-packager
Linux (Debian/Ubuntu)
-
安装打包所需的依赖项:
1sudo apt-get update
2 sudo apt-get install libssl-dev libsqlite3-dev pkg-config binfmt-support libxcursor-dev libx11-dev libasound2-dev libpulse-dev
-
运行打包命令:
1cargo packager --release
Windows(Windows-2022)
如果您已经按照上述说明配置了 Cargo.toml
文件,您可以运行打包命令:
1cargo packager --release --formats nsis
MacOS
如果您已经按照上述说明配置了 Cargo.toml
文件,您可以运行打包命令:
1cargo packager --release
移动平台打包
幸运的是,Makepad 提供了一种使用 cargo-makepad
为移动平台打包应用程序的便捷方式。
1cargo install --force --git https://github.com/makepad/makepad.git --branch dev cargo-makepad
Android
Android 可以使用 cargo-makepad
轻松打包:
1cargo makepad android install-toolchain
2cargo makepad android build -p your_profile_name --release # 这将构建 apk,然后您可以在设备或模拟器上安装它。
iOS
1cargo makepad apple ios install-toolchain
使用 cargo-makepad
构建 iOS 应用:
1cargo makepad apple ios --org=organisation_name --app=product_name run-sim/run-device -p your_profile_name --release
2
3为了让 makepad 能够在真实设备上安装 ios 应用程序,需要一个配置文件。
4要创建一个,请在 xcode 中创建一个空应用程序,给它一个组织名称和产品名称,您需要完全复制并且不带空格/奇怪字符到 --org=x 和 --app=x 中
5 --stable 使用稳定编译器
6 还要在设备上至少运行一次,这样配置文件就会被创建
7 --org=organisation_name
8 --app=product_name
9 如果您有多个签名身份或设备或配置文件,您可能需要明确设置它
10 --profile=
11 --cert=
12 --device=