跳到主要内容

iOS 应用程序包装

简介

Flet CLI 提供了 flet build ipa 命令,该命令允许将 Flet 应用程序打包到 iOS 存档 bundle 和 IPA 中,以便分发。

备注

该命令只能在 macOS 上运行。

前提条件

本机 Python 包

本机 Python 包(与纯 Python 包不同,纯 Python 包仅用 Python 编写)是部分用 C、Rust 或其他语言编写的包,生成本机代码。示例包包括 numpycryptographylxmlpydantic

当使用 flet build 命令将 Flet 应用程序打包到 iOS 中时,这些包无法从 PyPI 安装,因为没有 iOS 平台的轮子(.whl)。

因此,在运行 flet build 命令之前,您需要在计算机上为iOS编译native包。

进行中

我们正在积极工作,以自动化下面描述的过程 - 它是我们的待办事项列表中的第 1 项。

Flet 使用 Kivy for iOS 来为 iOS 构建 Python 包和 native Python 包。

要使用 flet build 命令和自定义本机包,您需要使用 Kivy for iOS 提供的 toolchain 工具。

toolchain 命令行工具只能在 macOS 上运行。

首先,创建一个新的 Python 虚拟环境,并安装来自 Flet fork 的 kivy-ios 包,如 here 所述:

pip install git+https://github.com/flet-dev/python-for-ios.git

使用 toolchain 命令构建您需要的包,例如构建 numpy

toolchain build numpy

注意: 您想要使用 toolchain 命令构建的库应该在 这个文件夹 中有一个 recipe。您可以 提交请求 来创建您需要的库的 recipe 或创建自己的 recipe 并提交 PR。

您也可以使用 pip 安装不需要编译的包:

toolchain pip install flask

在这种情况下,您不需要在 Flet 应用程序的 requirements.txt 中包括该包。

toolchain 命令完成时,您应该在 dist 目录中拥有所有需要的内容。

使用 realpath dist 命令获取 dist 目录的完整路径。

在运行 flet build ipa 命令以构建 Flet iOS 应用程序的终端中,运行以下命令以将 dist 完整路径存储在 SERIOUS_PYTHON_IOS_DIST 环境变量中:

export SERIOUS_PYTHON_IOS_DIST="<full-path-to-dist-directory>"

使用 flet build ipa 命令构建您的应用程序。

您的应用程序 bundle 现在包括自定义 Python 库。

flet build ipa

构建 iOS 存档 bundle 和 IPA 以便分发(仅限 macOS 主机)。

进行中

创建适合在设备上运行或发布到 AppStore 的 iOS 包是一个复杂的过程,具有许多移动部分。请让我们知道它是否适用于您的特定情况,并且是否需要对 Flutter 项目模板进行一些更改。

要成功生成 IPA,您需要为以下参数提供正确的值:

  • --org - 反向域名表示的组织名称,例如 com.mycompany(默认为 com.flet)。该值与 --project 结合使用,作为 iOS 和 Android bundle ID。
  • --project - 项目名称,以 C 样式标识符格式(小写字母数字下划线)用于构建 bundle ID 和 bundle 可执行文件名称。默认情况下,它是 Flet 应用程序目录的名称。
  • --team - 团队 ID,用于定位 provisioning 配置文件。如果不提供团队 ID,将生成未签名的 iOS 存档。