主题
将 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
--copyright
在应用"关于"对话框中显示的版权文本。
--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(无需确认即安装依赖)。