6. 在 Android 上使用 Python¶
Android 上的 Python 与桌面平台上的 Python 不同。在桌面平台上,Python 通常作为系统资源安装,可供该计算机的任何用户使用。用户通过运行 python 可执行文件并在交互式提示符下输入命令,或运行 Python 脚本来与 Python 交互。
在 Android 上,没有作为系统资源安装的概念。软件分发的唯一单元是“应用程序”。也没有控制台可以运行 python 可执行文件或与 Python REPL 交互。
因此,在 Android 上使用 Python 的唯一方法是嵌入式模式——即通过编写原生 Android 应用程序,使用 libpython
嵌入 Python 解释器,并使用Python 嵌入 API 调用 Python 代码。完整的 Python 解释器、标准库和所有 Python 代码都打包到您的应用程序中供其私有使用。
Python 标准库在 Android 上有一些显著的遗漏和限制。有关详细信息,请参阅API 可用性指南。
6.1. 将 Python 添加到 Android 应用程序¶
大多数应用程序开发人员应使用以下工具之一,它们将提供更轻松的体验:
如果您确定要手动完成所有这些操作,请继续阅读。您可以使用 testbed 应用程序作为指南;以下每个步骤都包含相关文件的链接。
首先,获取适用于 Android 的 Python 构建版本
最简单的方法是从 python.org 下载 Android 版本。下面提到的
prefix
目录位于包的顶层。或者,如果您想自己构建它,请按照 Android/README.md 中的说明进行操作。
prefix
目录将在cross-build/HOST
下创建。
在您的 build.gradle 文件中添加代码,将以下项目复制到您的项目中。除了您自己的 Python 代码,所有其他项目都可以从
prefix/lib
复制在您的 JNI 库中
libpython*.*.so
lib*_python.so
(外部库,如 OpenSSL)
在您的资产中
python*.*
(Python 标准库)python*.*/site-packages
(您自己的 Python 代码)
在您的应用程序中添加代码以将资产提取到文件系统。
在您的应用程序中添加代码以在嵌入式模式下启动 Python。这将需要通过 JNI 调用的 C 代码。
6.2. 为 Android 构建 Python 包¶
Python 包可以为 Android 构建为 wheel 并发布到 PyPI。推荐的工具是 cibuildwheel,它自动化了设置交叉编译环境、构建 wheel 并在模拟器上测试的所有细节。