Flet v0.25.0 版本发布公告
嘿,Flet 开发者们,我们有一些令人兴奋的消息要分享——Flet 0.25.0 正式发布了!
最大的新闻是什么呢?iOS 和 Android 打包不再依赖 Kivy 了。不再需要处理令人沮丧的 Python 二进制依赖关系——Flet 现在使用其自己的自定义 Python 运行时,因此您的应用构建比以往任何时候都更容易。此外,我们还添加了许多新功能,如更好的权限控制、更快的重建,甚至还有一个轻量级的 Linux 客户端,避免了臃肿。
让我们深入了解 Flet 0.25.0 所提供的所有酷炫功能吧!🚀
如何升级
运行以下命令来升级 Flet:
pip install 'flet[all]' --upgrade
[all]
是一个“额外”的指定符,它告诉 pip 安装所有 flet
包的依赖项。请参阅下面的新的 Python 包结构部分以了解解释。
在 requirements.txt
或 pyproject.toml
中将 flet
包版本提升到 0.25.0
(或者完全删除它以使用最新版本)。
新的打包方式
Flet 针对 iOS 和 Android 的打包一直依赖于 Kivy,当您的应用依赖于 Python 二进制包(如 Numpy 或 Pillow)时,这会非常烦人。您需要使用 Kivy 命令行工具自己编译这些包。如果 Kivy 没有某些包(如 Pydantic)的“配方”,那真的会让人感到沮丧甚至绝望。
Flet 不再依赖 Kivy,而是使用其自己在内部精心制作的 Python 运行时。
Flet 针对 iOS 和 Android 的打包实现遵循了 PEP 730(iOS)和 PEP 738(Android)中定义的严格规范,这些规范在 Python 3.13 中实现并发布(并回溯到 Python 3.12)。当 pypi.org 支持 iOS 和 Android 的 wheel 标签,并且第三方 Python 包维护者开始上传他们的移动包时,Flet 将与它们兼容,您将能够在您的 Flet 应用中使用它们。
预构建的二进制包
针对 iOS 和 Android 的 flet build
命令现在从 https://pypi.flet.dev 安装预构建的二进制包。
可以通过在 Mobile Forge 项目中创建配方来构建新的包。目前,Flet 团队正在为您编写这些配方,但当该过程经过完善并完全自动化后,您将能够发送 PR 并立即测试编译后的包。
如果您在 https://pypi.flet.dev 上还没有看到您需要的包,您可以在 Flet 讨论 - 包 中提出请求。请不要请求纯 Python 包。在 https://pypi.org 上转到包的“下载文件”部分,并确保它包含特定于二进制平台的 wheel。
打包行为也发生了变化:
- 打包不再尝试将
flet
依赖替换为flet-runtime
、flet-embed
或flet-pyodide
,而是从requirements.txt
或pyproject.toml
中“按原样”安装所有依赖项——这要归功于新的 Flet 包结构。 - 如果未找到目标平台的二进制包,打包将不会尝试从源分布进行编译,而是会以有意义的错误失败。
Python 3.12
打包的 Flet 应用在所有平台上都在 Python 3.12.7 运行时上运行。
权限
新的 flet build
命令允许对嵌入到 AndroidManifest.xml
、Info.plist
和 .entitlements
文件中的权限、功能和授权进行精细控制。
这些文件中不再有硬编码的权限!
例如,为 iOS 捆绑包设置权限:
flet build --info-plist NSLocationWhenInUseUsageDescription="此应用在使用时使用位置服务。"
或者在 pyproject.toml
中进行相同的设置(请阅读下文关于 pyproject.toml
支持的内容):
[tool.flet.ios.info] # --info-plist
NSLocationWhenInUseUsageDescription = "此应用在使用时会使用定位服务。"
设置 Android 权限和功能的示例:
flet build \
--android-permissions android.permission.READ_EXTERNAL_STORAGE=True \
android.permission.WRITE_EXTERNAL_STORAGE=True \
--android-features android.hardware.location.network=False
对应用编译和清理的控制
默认情况下,flet build
命令不再将应用的 .py
文件编译为 .pyc
文件,这使您能够推迟发 现应用中的任何语法错误并完成打包。
您可以使用以下新选项来控制编译和清理:
--compile-app
- 编译应用的.py
文件。--compile-packages
- 编译已安装包的.py
文件。--cleanup-on-compile
- 在成功编译后删除不必要的文件。
为 Android 捆绑包签名
我们还为 Android 构建添加了新的签名选项:
--android-signing-key-store
- Android 应用的上传密钥库.jks
文件的路径。--android-signing-key-store-password
- Android 签名存储密码。--android-signing-key-alias
- Android 签名密钥别名。默认是 "upload"。--android-signing-key-password
- Android 签名密钥密码。
阅读 构建和发布 Android 应用,以获取有关如何为 Android 构建配置上传密钥的更多信息。
深度链接配置
有一个新的 --deep-linking-url
选项可用于为 iOS 和 Android 构建配置深度链接。该值必须采用 <sheme>://<host>
的格式。