Skip to content

将 Flet Python 应用构建为平台专属的可执行文件或 可安装包。它支持构建到桌面(macOS、Linux、Windows)、Web、 Android(APK/AAB)和 iOS(IPA 与模拟器 .app),并提供大量用于元数据、 静态资源、启动画面和签名的自定义选项。

详细使用指南:https://flet.dev/docs/publish。

用法 ​

bash
flet build [-h] [-v] [-o OUTPUT_DIR]
                        [--arch TARGET_ARCH [TARGET_ARCH ...]]
                        [--exclude EXCLUDE [EXCLUDE ...]]
                        [--project PROJECT_NAME] [--artifact ARTIFACT_NAME]
                        [--description DESCRIPTION] [--product PRODUCT_NAME]
                        [--org ORG_NAME] [--bundle-id BUNDLE_ID]
                        [--company COMPANY_NAME] [--copyright COPYRIGHT]
                        [--android-adaptive-icon-background ANDROID_ADAPTIVE_ICON_BACKGROUND]
                        [--linux-categories LINUX_CATEGORIES [LINUX_CATEGORIES ...]]
                        [--splash-color SPLASH_COLOR]
                        [--splash-dark-color SPLASH_DARK_COLOR]
                        [--no-web-splash] [--no-ios-splash]
                        [--no-android-splash] [--ios-team-id IOS_TEAM_ID]
                        [--ios-export-method IOS_EXPORT_METHOD]
                        [--ios-provisioning-profile IOS_PROVISIONING_PROFILE]
                        [--ios-signing-certificate IOS_SIGNING_CERTIFICATE]
                        [--base-url BASE_URL]
                        [--web-renderer {auto,canvaskit,skwasm}]
                        [--route-url-strategy {path,hash}]
                        [--pwa-background-color PWA_BACKGROUND_COLOR]
                        [--pwa-theme-color PWA_THEME_COLOR] [--no-wasm]
                        [--no-cdn] [--split-per-abi]
                        [--android-legacy-packaging | --no-android-legacy-packaging]
                        [--compile-app | --no-compile-app]
                        [--compile-packages | --no-compile-packages]
                        [--swift-package-manager | --no-swift-package-manager]
                        [--cleanup-app]
                        [--cleanup-app-files CLEANUP_APP_FILES [CLEANUP_APP_FILES ...]]
                        [--cleanup-packages]
                        [--cleanup-package-files CLEANUP_PACKAGE_FILES [CLEANUP_PACKAGE_FILES ...]]
                        [--flutter-build-args [FLUTTER_BUILD_ARGS ...]]
                        [--source-packages SOURCE_PACKAGES [SOURCE_PACKAGES ...]]
                        [--android-extract-packages ANDROID_EXTRACT_PACKAGES [ANDROID_EXTRACT_PACKAGES ...]]
                        [--python-version PYTHON_VERSION]
                        [--info-plist INFO_PLIST [INFO_PLIST ...]]
                        [--macos-entitlements MACOS_ENTITLEMENTS [MACOS_ENTITLEMENTS ...]]
                        [--android-features ANDROID_FEATURES [ANDROID_FEATURES ...]]
                        [--android-permissions ANDROID_PERMISSIONS [ANDROID_PERMISSIONS ...]]
                        [--android-meta-data ANDROID_META_DATA [ANDROID_META_DATA ...]]
                        [--permissions {location,camera,microphone,photo_library} [{location,camera,microphone,photo_library} ...]]
                        [--deep-linking-scheme DEEP_LINKING_SCHEME]
                        [--deep-linking-host DEEP_LINKING_HOST]
                        [--android-signing-key-store ANDROID_SIGNING_KEY_STORE]
                        [--android-signing-key-store-password ANDROID_SIGNING_KEY_STORE_PASSWORD]
                        [--android-signing-key-password ANDROID_SIGNING_KEY_PASSWORD]
                        [--android-signing-key-alias ANDROID_SIGNING_KEY_ALIAS]
                        [--macos-signing-identity MACOS_SIGNING_IDENTITY]
                        [--macos-distribution {none,developer-id,app-store}]
                        [--macos-notary-profile MACOS_NOTARY_PROFILE]
                        [--macos-provisioning-profile MACOS_PROVISIONING_PROFILE]
                        [--macos-installer-identity MACOS_INSTALLER_IDENTITY]
                        [--build-number BUILD_NUMBER]
                        [--build-version BUILD_VERSION]
                        [--module-name MODULE_NAME] [--template TEMPLATE]
                        [--template-dir TEMPLATE_DIR]
                        [--template-ref TEMPLATE_REF] [--show-platform-matrix]
                        [--no-rich-output] [--yes] [--skip-flutter-doctor]
                        {macos,linux,windows,web,apk,aab,ipa,ios-simulator}
                        [python_app_path]

位置参数 ​

target_platform ​

要构建的目标平台或软件包类型。

可选值: aab, apk, ios-simulator, ipa, linux, macos, web, windows

必填: true

python_app_path ​

存放 Flet Python 程序的目录路径。

默认值: .

选项 ​

--android-adaptive-icon-background ​

用于填充 Android 自适应图标背景的颜色。

--android-extract-packages ​

仅 Android:以相对路径指定的 Python 包,它们会被解压到磁盘上分发,而不是放在应用 zip 内部——适用于那些通过 file / pkg_resources 而不是 importlib.resources 读取打包数据的包。

取值: ANDROID_EXTRACT_PACKAGES+

--android-features ​

要添加到 AndroidManifest.xml 的 <feature_name>=true|false 特性列表(仅 android);可多次使用。

取值: ANDROID_FEATURES+

--android-legacy-packaging ​

使用旧版 Android 原生库打包方式:在安装时把 .so 解压到磁盘,而不是直接从 APK 内存映射。默认关闭(使用现代打包方式)。启用后会让原始 .apk 文件更小、便于侧载,代价是设备上安装体积更大、原生库加载更慢(仅 Android)。

别名: --no-android-legacy-packaging

--android-meta-data ​

要添加到 AndroidManifest.xml 的 <name>=<value> 应用元数据条目列表(仅 android);可多次使用。

取值: ANDROID_META_DATA+

--android-permissions ​

要添加到 AndroidManifest.xml 的 <permission_name>=true|false 权限列表(仅 android);可多次使用。

取值: ANDROID_PERMISSIONS+

--android-signing-key-alias ​

Android 签名密钥别名。

环境变量: FLET_ANDROID_SIGNING_KEY_ALIAS

--android-signing-key-password ​

Android 签名密钥密码。

环境变量: FLET_ANDROID_SIGNING_KEY_PASSWORD

--android-signing-key-store ​

Android 应用上传密钥库 .jks 文件的路径。

环境变量: FLET_ANDROID_SIGNING_KEY_STORE

--android-signing-key-store-password ​

Android 签名密钥库密码。

环境变量: FLET_ANDROID_SIGNING_KEY_STORE_PASSWORD

--arch ​

为特定的 CPU 架构进行构建(仅用于 macOS 和 Android 构建)。Android:arm64-v8a、armeabi-v7a、x86_64;macOS:arm64、x86_64。示例:--arch arm64-v8a。

取值: TARGET_ARCH+

--artifact ​

磁盘上的可执行文件或包名称。

--base-url ​

应用提供服务的基础 URL(仅 Web)。

--build-number ​

构建号——用作内部版本号的标识符。

取值: BUILD_NUMBER <int>

--build-version ​

构建版本——一个 x.y.z 字符串,作为向用户展示的版本号。

--bundle-id ​

应用的 Bundle ID,例如 com.mycompany.app-name。它用作 iOS、Android、macOS 和 Linux 的 bundle ID。

--cleanup-app ​

打包时移除多余的应用文件。

--cleanup-app-files ​

用于删除多余应用文件和目录的 glob 列表。

取值: CLEANUP_APP_FILES+

--cleanup-package-files ​

用于删除多余包文件和目录的 glob 列表。

取值: CLEANUP_PACKAGE_FILES+

--cleanup-packages ​

打包时移除多余的包文件。

--company ​

在应用"关于"对话框中显示的公司名称。

--compile-app ​

把应用的 .py 文件预编译为 .pyc(默认开启;使用 --no-compile-app 关闭)。

别名: --no-compile-app

--compile-packages ​

把站点包的 .py 文件预编译为 .pyc(默认开启;使用 --no-compile-packages 关闭)。

别名: --no-compile-packages

在应用"关于"对话框中显示的版权文本。

--deep-linking-host ​

iOS 和 Android 构建的深度链接 URL 主机。

--deep-linking-scheme ​

为 iOS 和 Android 构建配置的深度链接 URL scheme,例如 https 或 myapp。

--description ​

应用的简短描述。

--exclude ​

要从包中排除的文件和/或目录;可多次使用。

取值: EXCLUDE+

--flutter-build-args ​

flutter build 命令的附加参数。

取值: FLUTTER_BUILD_ARGS*

--help ​

显示此帮助信息并退出。

别名: -h

--info-plist ​

要添加到 Info.plist 的 <key>=<value> 键值对列表。值可以是布尔值、字符串、数字、TOML 数组或 TOML 内联表(仅 macos、ipa 和 ios-simulator);可多次使用。

取值: INFO_PLIST+

--ios-export-method ​

iOS 应用包的导出方式(默认:debugging)。

--ios-provisioning-profile ​

用于签名和导出 iOS 应用包的描述文件名称或 UUID。

--ios-signing-certificate ​

用于签名 iOS 应用包的签名证书名称、SHA-1 哈希或自动选择器。

--ios-team-id ​

用于签名 iOS 应用包的 Apple 开发者团队 ID(仅 ipa)。

--linux-categories ​

为生成的桌面条目指定的 freedesktop 应用分类列表,例如 Education 或 Game(仅 linux);可多次使用。

取值: LINUX_CATEGORIES+

--macos-distribution ​

用于签名和打包的分发渠道:'developer-id' 使用强化运行时签名、公证并装订,供直接分发;'app-store' 生成带内嵌描述文件的沙盒构建,以及用于 App Store Connect / TestFlight 的已签名安装包 .pkg;'none'(默认)仅在配置了签名身份时才进行签名(仅 macos)。

可选值: app-store, developer-id, none

--macos-entitlements ​

<key>=<value> 形式的授权项列表。值可以是布尔值、字符串、数字、TOML 数组或 TOML 内联表(仅 macos);可多次使用。

取值: MACOS_ENTITLEMENTS+

--macos-installer-identity ​

用于签名 App Store 安装包的 "3rd Party Mac Developer Installer" / "Mac Installer Distribution" 证书名称或 SHA-1 指纹;未配置时,会自动发现钥匙串中唯一的安装证书(仅 macos)。

环境变量: FLET_MACOS_INSTALLER_IDENTITY

--macos-notary-profile ​

使用 xcrun notarytool store-credentials 创建的钥匙串 profile 名称,用于向 Apple 公证服务进行身份验证;也可以改为设置 APPLE_API_KEY、APPLE_API_KEY_ID 和 APPLE_API_ISSUER 环境变量(仅 macos)。

环境变量: FLET_MACOS_NOTARY_PROFILE

--macos-provisioning-profile ​

要内嵌到 Contents/embedded.provisionprofile 的 Mac App Store 描述文件(.provisionprofile)路径;App Store 构建必需(仅 macos)。

环境变量: FLET_MACOS_PROVISIONING_PROFILE

--macos-signing-identity ​

用于对应用包进行代码签名的 "Developer ID Application"(直接分发)或 "Apple Distribution"(App Store)证书名称、其 SHA-1 指纹,或用于 ad-hoc 的 "-";未配置时(CLI、pyproject.toml 或环境变量),developer-id 和 app-store 分发构建会自动发现所需类型的唯一证书(仅 macos)。

环境变量: FLET_MACOS_SIGNING_IDENTITY

--module-name ​

包含应用入口点的 Python 模块名称。

--no-android-splash ​

在 Android 平台上禁用启动画面。

--no-cdn ​

禁止从 CDN 加载 CanvasKit、Pyodide 和字体。

环境变量: FLET_WEB_NO_CDN

--no-ios-splash ​

在 iOS 平台上禁用启动画面。

--no-rich-output ​

禁用富文本输出,改用纯文本。在 Windows 构建时很有用。

环境变量: FLET_CLI_NO_RICH_OUTPUT

--swift-package-manager ​

在 iOS/macOS 构建中,通过 Swift Package Manager(默认)或 CocoaPods 集成内嵌的 Python 运行时。默认开启,与默认使用 SPM 的 Flutter 3.44+ 保持一致(其他非 SPM 插件仍会同时用 CocoaPods 构建)。仅当你在 Flutter 中禁用了 Swift Package Manager 时,才使用 --no-swift-package-manager(或在 [tool.flet] 下设置 swift_package_manager = false)。

别名: --no-swift-package-manager

--no-wasm ​

禁用 Web 构建的 WASM 目标(仅 Web)。

--no-web-splash ​

在 Web 平台上禁用启动画面。

--org ​

采用反向域名表示法的组织名称,例如 com.mycompany,会与项目名称组合后用于 bundle ID 和签名。

--output ​

最终可执行文件/包的输出目录(默认:<python_app_path>/build/<target_platform>)。

别名: -o

--permissions ​

iOS、Android 和 macOS 构建的预定义跨平台权限列表。

可选值: camera, location, microphone, photo_library

--product ​

在应用启动器、窗口标题和"关于"对话框中显示的名称。

--project ​

用于 bundle ID 和标识符的项目名称;作为 artifact 和 product 名称的默认值。

--pwa-background-color ​

Web 应用的初始背景色(仅 Web)。

--pwa-theme-color ​

Web 应用界面的默认颜色(仅 Web)。

--python-version ​

要打包的 Python 版本(例如 3.13)。默认为支持的最新版本,或从 project.requires-python 中解析。

--route-url-strategy ​

应用提供服务的基础 URL 路径。如果应用托管在子目录中会很有用(仅 Web)。

可选值: hash, path

环境变量: FLET_WEB_ROUTE_URL_STRATEGY

--show-platform-matrix ​

以表格形式显示构建平台矩阵,然后退出。

--skip-flutter-doctor ​

构建失败时跳过运行 Flutter doctor。

环境变量: FLET_CLI_SKIP_FLUTTER_DOCTOR

--source-packages ​

要从源码分发包安装的 Python 包列表。

取值: SOURCE_PACKAGES+

--splash-color ​

iOS、Android 和 Web 上应用启动画面的背景色。

--splash-dark-color ​

iOS、Android 和 Web 上应用启动画面在深色模式下的背景色。

--split-per-abi ​

按 ABI 拆分 APK(仅 Android)。

--template ​

包含 Flutter 引导模板的目录,或 git 仓库模板的 URL。

--template-dir ​

仓库中 Flutter 引导模板的相对路径。

--template-ref ​

克隆含 Flutter 引导模板的仓库后要检出的分支、标签或提交 ID。

--verbose ​

启用详细输出。使用 -v 输出标准详细日志,使用 -vv 输出更详细的信息。

别名: -v

--web-renderer ​

要使用的 Flutter Web 渲染器(仅 Web),默认:canvaskit。

可选值: auto, canvaskit, skwasm

环境变量: FLET_WEB_RENDERER

--yes ​

对所有提示都回答 yes(无需确认即安装依赖)。


关注我,学习大模型、大数据、Python等热门技术。