完整教程:Python - PEP 738 – 将 Android 添加为支持平台

news/2025/11/15 10:43:38/文章来源:https://www.cnblogs.com/tlnshuju/p/19224575

完整教程:Python - PEP 738 – 将 Android 添加为支持平台

2025-11-15 10:42  tlnshuju  阅读(0)  评论(0)    收藏  举报

Python - PEP 738 – 将 Android 添加为支持平台

摘要

本 PEP 提议在 CPython 中将 Android 添加为支持平台。初步目标是在 Python 3.13 实现 Android 的 Tier 3 支持。

本 PEP 基于PEP 730(Russell Keith-Magee 的“将 iOS 添加为承受平台”),涵盖了许多类似障碍。两平台的显著差异可通过搜索“iOS”一词找到。

动机

在过去的 15 年里,移动平台在计算领域的重要性日益提升。Android 是运行在约70% 移动设备上的操作系统。然而,CPython 目前并不正式支撑 Android。

Chaquopy、BeeWare 和 Kivy等项目多年来一直拥护 Android,并且相关应用已被 Google Play 商店接受。这证明了技术上完全可行。

对于 Python 的未来来说,能在主流平台广泛使用至关重要。否则,潜在用户会转向那些已经支持这些平台的其他语言。尤其在教育领域,下一代开发者已经越来越多地使用移动平台而不是桌面设备。

原理

通用

Android 基本是 POSIX 平台,基于 Linux 内核,使用 ELF 二进制格式。但它不应用 glibc,而是自带名为 Bionic 的 C 库,因此即使架构相同,也通常与其他 Linux 发行版二进制不兼容。Android 还拥有独特的文件系统布局,与其他 Unix 不同。

不过,Android 对 Linux 的源代码兼容性相当好。早期 C 库很不完整,但到 2014 年已核心补齐。此后,绝大多数为 Linux 编写的 C 代码都能为 Android 编译,只要不直接访问硬件或底层系统服务。

CPython 也是如此,尽管未正式拥护 Android,但自 3.6 版起,仅需极少补丁即可为 Android 编译。

操作系统版本

每个 Android 版本有三种标识方式:

三者无固定对应规则,需查表。

每年有新主版本,但能否升级完全由设备厂商决定,许多厂商在用户淘汰设备前已停止提供更新。例如,截至 2023 年 10 月,仍有安全更新的最老版本是 API 30,但据Google 官方统计,仅 60% 设备运行该版本或更新版本。

因此,建议 Python 3.13 的最低支持 Android 版本为 5.0(API 21,2014 年发布),覆盖 99% 的活跃设备。

开发工具

Android 开发工具在 Linux(x86_64)、Windows(x86_64)和 macOS(x86_64、ARM64)上均等支撑。CPython 相关主要设备有:

上述软件可在命令行或 Android Studio(基于 IntelliJ IDEA)中利用。

架构

Android 当前支持 4 种架构,命名如下:

绝大多数真机用 ARM 架构,x86/x86_64 仅在模拟器用。

Python 3.13 Tier 3 仅支持 64 位平台(arm64-v8ax86_64):

即使 32 位架构不被官方支持,也不应做出妨碍下游工程构建 32 位包的更改。

应用生命周期

由操作系统启动虚拟机运行系统提供的可执行文件。应用中的 Java 代码可通过 JNI 加载动态库并调用本地代码。就是Android 应用主要用 Java 或 Kotlin 编写。应用本身不提供可执行文件,而

与 iOS 不同,Android 支持创建子进程,但仅可在特定位置运行,且这些位置运行时不可写。长时间运行的子进程官方并不推荐,未来也可能不再支持。

Android 给出命令行 shell,但仅供开发者使用,普通用户无法访问。

因此,推荐的 Python 运行方式是在主进程加载 libpython3.x.so 动态库。不会正式支持 python3.x 可执行文件。

规范

工作范围

本项工作的重点是在 Android 上搭建类似于Windows 可嵌入包的功能,即一组可被开发者集成到应用中的编译库,无需安装器。

将 Android 加入 Tier 3 只需支持用未经补丁的 CPython 源码编译出 Android 兼容包,无需 python.org 官方分发 Android 构建(但未来可补充)。

Android 构建流程与其他 POSIX 平台一致,使用 configure/Makefile 系统,须在 POSIX 平台(Linux 或 macOS)构建。

将提供 Gradle 项目用于运行 CPython 测试套件,并自动化测试 app 构建、模拟器启动、安装及执行。

链接方式

如应用生命周期所述,Python 将作为动态库 libpython3.x.so 集成进 app,可用 dlopen 加载。

与 Linux 不同,Android 即使指定 RTLD_GLOBAL,也不会自动用已 dlopen 的库解析后续库的重定位符。因此所有 Python 扩展模块在 Android 上构建时必须显式链接 libpython3.x.so

扩展模块若链接 libpython3.x.so,则不能被静态链接 libpython3.x.a 的可执行文件加载。因此,Android 不支持静态 libpython3.x.a,与 Windows 策略一致。

这种方式允许用 -Wl,--no-undefined 在构建时检测缺失符号,提升开发效率。

与 iOS 不同,Android 可从任意位置加载动态库,因此 .py、.pyc 和 .so 可同目录共存,由标准 importer 处理。

标准库

不帮助的模块

因底层 C API 不可用,以下标准库模块不帮助:

sys

sys.platform 返回 "android"。虽然 Android 基于 Linux,但差异足够大,值得单独命名。

嵌入 Android app 时,C 层 stdio 未连接到任何输出。因此 sys.stdoutsys.stderr 将重定向到系统 Logcat,可用开发工具查看。sys.stdin 永远返回 EOF。

platform

platform 模块大部分值与 os.uname() 返回相同,例外如下:

此外将新增 platform.android_ver(),返回包含以下内容的 namedtuple:

modeldevice 哪个更独特、哪个更接近市场名因厂商而异。

os

os.uname() 返回 POSIX uname() 原始结果:

os 作为底层 API,platform 提供更高阶通用信息。

CI 资源

因模拟器和真机 ABI 一致、系统二进制高度相似,模拟器测试足够。x86_64 模拟器可在 Linux、macOS、Windows 上运行,ARM64 模拟器仅限 ARM64 Mac。

Anaconda已承诺提供运行 Android buildbot 的物理硬件,包括 Linux x86_64 和 macOS ARM64,覆盖两种运行和构建架构。

CPython 目前不在 GitHub Actions 上测试 Tier 3 平台,若未来协助,Linux/macOS runner 也可运行 Android 模拟器。macOS ARM64 runner 自 2024 年 1 月起对所有公开仓库免费开放。

打包

Android wheel 标签格式为 android_<api-level>_<abi>,如:

其中 <api-level> 见操作系统版本,代表构建 wheel 时选定的最低 Android 版本。pip 等设备应像 macOS 标签一样解释,即 app 最低 API level 为 N 时可用 N 或更低的 wheel。

该格式源自 Chaquopy 项目,目前维护的wheel 仓库标签范围覆盖 API 16~21。

但依赖少数爱好者维护生态不可持续。只有主流库常规发布 Android wheel,社区才能真正普及 Python on Android。

因此,需详细文档说明如何在 CI 和发布工具中添加 Android 构建。为crossenv 和 cibuildwheel等工具添加 Android 支持是一种方式。

该 Android wheel 标签应被 PyPI 接受。

PEP 11 更新

PEP 11将新增两个受拥护 Android ABI。Autoconf 已识别为:

Petr Viktorin 将作为这些 ABI 的核心团队联系人。

向后兼容性

新增平台不会引入 CPython 本身的向后兼容性问题。但历史上协助 CPython 的项目(如 BeeWare、Kivy)若与最终补丁不一致,可能受影响。

安全影响

新增平台不会带来安全影响。

如何教学

本 PEP 教学内容面向两类开发者:

  1. 应用开发者:需了解如何将 Python 集成进 Android app,包括自己的 Python 代码和依赖包,以及运行方式。文档会类似Windows 可嵌入包。但建议大多数开发者使用Briefcase、Chaquopy、Buildozer等高层设备,这些工具已有完善文档。
  2. 带二进制组件的包开发者:需了解如何为 Android 构建并发布自己的包(见打包)。

参考实现

Chaquopy 仓库包含参考补丁和构建脚本。需与 Chaquopy 其他部分解耦后才能上游合并。

Briefcase提供了在 Android 设备和模拟器上执行测试的参考实现。Toga Testbed是用 GitHub Actions 在 Android 模拟器上跑测试的示例。

被拒绝方案

对原 platform.android_ver() 规范的更改包括:

版权

本文档可置于公有领域或 CC0-1.0-Universal 许可下,以更宽松者为准。

原文地址:https://peps.python.org/pep-0738/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/966083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年11月AI智能客服机器人品牌推荐:性能评价榜全维度盘点

把客服中心搬到云上、把人工坐席换成AI,是2025年政企用户最迫切的数字化动作之一。政策层面,《“十四五”数字经济发展规划》要求2025年政务服务热线智能化率不低于85%,企业侧则面临人力成本年均上涨8%的压力,双重…

完整教程:Vue3与Cesium:轻量版3D地理可视化实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年11月网络文化经营许可证代办公司权威榜:五强对比评测

想把直播、动漫、音乐等线上业务做大,却卡在“网络文化经营许可证”这一纸批文?多数创业者面对流程长、材料多、政策更新快三大痛点,常因一次补正就拖慢整盘融资或上线计划。2024年文化和旅游部全国市场管理数据显示…

膜结构生产厂家、膜结构车棚哪家好、膜结构看台源头厂家、膜结构污水池厂家排行榜、景观膜结构厂家推荐、膜结构雨棚厂家、反吊膜源头厂家、美雅达膜结构

膜结构生产厂家、膜结构车棚哪家好、膜结构看台源头厂家、膜结构污水池厂家排行榜、景观膜结构厂家推荐、膜结构雨棚厂家、反吊膜源头厂家、美雅达膜结构膜结构生产厂家、膜结构车棚哪家好、膜结构看台源头厂家、膜结构…

如何禁用XFCE的屏幕锁

设置——会话和启动——应用程序自启动 取消对 屏幕锁 的选中。

2025年11月上海遗产继承律师评测榜:五强名单与选择策略

在上海,一套老洋房可能牵扯三代人、四套境外股权、五份不同年份的遗嘱,继承手续稍有疏漏,资产就可能被冻结数年。高净值家庭、涉外子女、再婚家庭三类人群最常遇到“资产类型多、继承关系杂、诉讼周期长”的痛点:境…

05_杂记 学习方法很重要!

05_杂记 学习方法很重要!学习方法很重要! 比学到的知识更重要 可以在IDEA中建一个note.md文件,随时做笔记! IDEA中支持md文件。

2025年11月上海遗产继承律师评价榜:五强机构数据全解析

在上海,一套老洋房可能牵扯三代人、两份遗嘱、四处境外账户;一位独居老人离世,子女却发现公司股权已被旁系亲属质押。面对跨境资产、拆迁安置房、未公证遗嘱交织的继承迷宫,当事人最怕的是“律师看不懂家族图谱、算…

2025年中小学生AI学习机怎么选?这品牌凭技术封神,全学段都适配!

2025年中小学生AI学习机怎么选?这品牌凭技术封神,全学段都适配!一、先划重点:为什么优先推荐松鼠 AI 学习机? 面对市面上琳琅满目的品牌,松鼠 AI 学习机凭借 11 年智适应教育深耕、780 项授权专利加持,以及国家…

2025年11月北京物流公司推荐榜:热门企业对比与口碑排行

年底将至,电商大促、工厂集中出货、个人搬家需求叠加,北京物流市场进入全年最繁忙的窗口。对于需要把货物快速、安全、经济地发往全国甚至境外的用户来说,如何在“车多、库多、广告更多”的环境里迅速锁定一家既能接…

2025年11月消音室厂家推荐榜:五强对比与性能全解析

正在筹备听力中心、电声实验室或整车NVH测试平台的您,可能正被“到底选哪家消音室厂家”困扰:建设周期能不能再短一点?本底噪声能不能再低一点?后期维护会不会麻烦?预算会不会超支?这些痛点背后,其实是同一串关…

2025年11月消音室厂家推荐排名榜:五强性能数据与认证资质一览

“实验室背景噪声老是降不下去,第三方检测报告被客户质疑”“学校科研项目招标,评委要求提供ISO 3745 Class 1现场实测曲线”——这是近期不少用户向顾问咨询时重复的场景。消音室(含半消声室)作为电声、家电、汽车…

2025年11月北京物流公司优选榜:五强对比与权威排行

如果您正在北京寻找一家能把货物安全、准时、省心送达目的地的物流公司,大概率会陷入“信息过载”:平台广告铺天盖地,报价高低悬殊,服务承诺看似雷同,却难以验证。尤其是工厂搬迁、钢琴托运、冷链红酒、大件设备这…

2025年11月隔音室厂家榜单:五强口碑与实测数据综合排行

如果您正在筹建听力中心、升级医院听力检测科室,或者为体检机构、连锁药房寻找可快速落地的静音检测空间,大概率会被“隔音室厂家”这一关键词反复拉回搜索结果页。需求背后通常藏着三条主线:一是项目周期紧,希望三…

2025年11月隔音室厂家推荐榜:一站式选购指南与厂家排名榜

如果您正在筹建听力中心、升级医院测听室,或是为科研团队寻找低噪环境,隔音室厂家的选择往往决定后续十年的使用成本与数据可靠性。2025年行业调研显示,全国新增听力服务机构同比增幅18%,但超过六成项目因隔声量不…

2025年11月超声波清洗机厂家推荐排行:五家主流品牌深度对比评价

进入2025年第四季度,精密制造、医疗、电子等行业对零部件洁净度要求继续抬升,超声波清洗机作为“无刷、无损、深孔可达”的关键设备,采购需求集中释放。调研显示,用户最焦虑的三件事依次是:怕买到贴牌机、怕售后响…

2025年隔音室厂家联系方式推荐:精选推荐与使用指南

在听力健康、科研实验、职业体检等场景快速扩张的2025年,一间指标过硬、交付周期短、售后响应快的隔音室,往往决定了项目能否如期落地。面对网上信息碎片化、报价不透明、售后条款模糊等痛点,多数采购方希望拿到一份…

2025年11月隔音室厂家排名榜:五强品牌数据化选购参考

“我们想把听力筛查车开进乡镇,却找不到既通风又隔声的房间”“医院要建ABR室,预算紧,还要通过计量认证”——过去十二个月,国家卫健委连续两份《县医院听力学能力建设指南》把“隔声室”写进硬性指标,叠加助听器…

2025年11月超声波清洗机厂家推荐榜:五强对比看技术实力与服务差异

引言与现状分析 在精密制造、医疗、电子、汽车等行业,零部件清洁度直接影响良率与可靠性。用户寻找超声波清洗机厂家时,通常面临三大痛点:一是设备能否在复杂几何形状上实现一致清洁;二是产线升级时能否快速对接自…