【外评】Python 与苹果应用商店的拒绝作斗争
内容提要
Python 3.11被苹果应用商店拒绝,开发者讨论如何适应审核流程。苹果应用商店自动拒绝包含字符串"itms-services"的应用。开发者考虑使用混淆或工具如Briefcase、py2app和buildozer来解决问题。另一个建议是使用JSON配置文件代替在urllib中硬编码字符串。还提出了一个名为"--with-app-store-patch"的构建选项。这不是第一次遇到这样的问题,Python开发者正在寻找最方便的解决方案。
延伸解读
问题根源:标准库中的敏感字符串
苹果应用商店自动拒绝包含“itms-services”字符串的应用,而该字符串位于Python标准库的urllib解析器中。即使应用从未实际使用该协议,也会因字符串存在而被拒。这反映出平台审核规则与通用编程语言标准库之间的冲突,开发者需要理解这种机械式检查的局限性。
解决思路:从混淆到构建选项
开发者提出了多种方案:混淆字符串、使用Briefcase等打包工具、用JSON配置文件替代硬编码,以及添加构建时选项“--with-app-store-compliance”来移除问题代码。这些方案各有取舍,混淆可能引发军备竞赛,而构建选项则更系统化,但需要上游支持。
社区讨论与未来方向
Python核心开发者倾向于将应用商店合规视为分发问题,而非语言设计目标。Keith-Magee提出的构建选项预计在Python 3.13中实现,默认在iOS启用,其他平台可选。这为开发者提供了临时解决方案,但根本问题仍在于平台审核的不透明性。
Q&A
为什么Python 3.11被苹果应用商店拒绝?
因为苹果应用商店自动拒绝包含'itms-services'字符串的应用程序,这影响了Python应用的发布。
开发者如何应对苹果应用商店的审核流程?
开发者考虑使用混淆技术或工具如Briefcase、py2app和buildozer来解决问题。
有什么建议可以避免被苹果应用商店拒绝?
建议使用JSON配置文件代替在urllib中硬编码字符串,以避免被拒绝。
Keith-Magee提出了什么构建选项来解决问题?
他提出了一个名为'--with-app-store-patch'的构建选项,旨在删除已知有问题的代码。
苹果的审查流程有什么特点?
苹果的审查流程被认为是偏执且不透明,开发者希望找到更好的解决方案。
Python开发者对未来审核问题的态度是什么?
Python开发者正在寻找最方便的解决方案,以应对未来可能的审核问题。