我可以使用Python编写本机iPhone应用程序吗?


91

使用PyObjC,您可以使用Python编写适用于OS X的Cocoa应用程序。我可以使用Python编写本机iPhone应用程序吗?


36
iPhone开发人员将这个问题标记为过时(太本地化),并且试图解决此问题也引起了人们的抱怨,即它仍然是正确的。因此,如果您因搜索而在这里,请注意,这个答案来自'08,可能没有正确的答案。

1
进一步说明:苹果公司曾经在其协议中有一个部分专门列出了允许的编程语言C,C ++,Objective-C和Javascript。这引起了很多混乱,怀疑和恐惧。最终,Apple停止了对这些语言的命名。我知道这样一个事实,即使在适当的时候,商店中的各种应用程序仍在使用,以某种方式使用Lua脚本进行发布,发布或开发中。
LearnCocos2D 2012年

Answers:


37

目前尚不可用,目前仅有的可用于访问iPhone SDK的语言为C / C ++,Objective C和Swift。

没有技术上的原因为什么将来这种情况不会改变,但我不会在短期内屏住呼吸。

也就是说,Objective-C和Swift确实不是太吓人...

2016年

带有NativeScript框架的Javascript现在可以使用。


32
我已经在Objective-C中编写了一个多功能iPhone应用程序,并在PyObjC中编写了一个多功能Mac应用程序,我不得不说,根据经验,Objective-C特别适用于数据结构的语法(例如数组和数组)。字典)比Python麻烦得多,而且乏味。在苹果公司包括对PyObjC的支持之前,我基本上拒绝在我的iPhone应用程序上进行进一步的开发。当我尝试开发自上而下的算法流程时,Objective-C相对冗长而乏味的语法使我分心。
克里斯·雷德福

1
@Dave Verwer:这个答案仍然是最新的吗?
bukzor


2
@cobbal:那么,这个线程很容易让人产生误解。纠正它的正确方法是什么?
bukzor

5
@Max您是否使用PyObjC创建了Mac应用程序,并因此比较了Python编写的Apple程序和Objective-C编写的Apple程序的可读性?如果没有,您就没有该判断的依据。
克里斯·雷德福德


24

看来现在这是开发人员可以做的事情:iOS开发人员协议昨天已更改,并且似乎已作了某种修改,以使在您的应用程序中嵌入Python解释器合法:

3.3.2节—口译员

旧:

3.3.2应用程序本身不能以任何方式自身安装或启动其他可执行代码,包括但不限于通过使用插件体系结构,调用其他框架,其他API或其他方式。除非Apple另行书面批准,否则不得下载或在应用程序中使用任何经解释的代码,除非由Apple的Documented API和内置解释器解释和运行的代码除外。尽管有前述规定,但在得到苹果公司事先书面同意的情况下,如果本应用程序仅用于提供与本应用程序预期用途和广告目的一致的次要特征或功能,则该应用程序可以有限的方式使用嵌入式解释代码。

新:

3.3.2应用程序不得下载或安装可执行代码。如果所有脚本,代码和解释器都打包在应用程序中而不下载,则解释的代码只能在应用程序中使用。前述的唯一例外是由Apple的内置WebKit框架下载并运行的脚本和代码。



21

是的,如今您可以使用Python开发适用于iOS的应用程序。

您可能要签出两个框架:KivyPyMob

请也考虑此问题的答案,因为它们比该问题更及时。


Kivy和PyMob无法生成本机应用程序
Serjik 2015年

取决于您对“本机”的定义。这个问题暗示了一个定义,该定义涵盖了在某种程度上涵盖了为OSX编写python应用程序的方式,就像现在为iOS编写它们一样。
Filipe Correia,2015年



4

iPhone SDK协议在是否允许您运行脚本语言(WebView的Javascript之外)方面也相当含糊。我的理解是,这可以-只要您没有从网络下载执行的脚本即可(因此预安装和用户编辑的脚本似乎可以)。

IANAL等


3

BeeWare是一个用于编写本机iOS和Android应用程序的开源框架。


它仍然处于开发阶段,存在问题
ikel

3

2019更新:

尽管Python-iOS开发相对不成熟,可能会阻止(afaik)您的应用具有本机UI和可以通过Apple支持的开发语言实现的功能,但Apple现在似乎允许将Python解释器嵌入本机Swift / Obj-C应用。

这支持直接从本机Swift / Obj-C代码导入Python库和运行Python脚本(甚至带有提供的命令行参数)。

我的公司实际上是将我们的基础结构(最初用Python编写)包装在一个本地iOS应用程序中!它工作得很好,并且可以通过客户端-服务器模型轻松实现部件之间的通信。

如果您想尝试在iOS应用中运行Python脚本,这是Beeware的一个不错的库,带有cookiecutter模板:https : //github.com/beeware/Python-Apple-support/tree/3.6


1

从技术上讲,只要未下载ISN的解释代码(不包括JavaScript),该应用就可以获得批准。Rhomobiles的“ Rhodes”框架正是这样做的,它将移动Ruby,轻量级的Rails和您的应用程序捆绑在一起,以便通过应用程序商店进行分发。因为解释器和解释后的代码都打包到了最终应用程序中,所以Apple认为它不令人反感。

http://rhomobile.com/products/rhodes/

即使在最新的Apple新闻发布之后,Rhodes应用程序(移动红宝石)仍然可以在应用程序商店中使用。我很难相信,如果有一个愿意的开发人员社区,tinyPy或pyObjC不会找到位置。


0

您可以使用PyObjC,当然也可以使用越狱的手机。但是,如果您希望将其放入App Store,则他们将不允许它,因为它“解释了代码”。但是,您可能可以使用Shed Skin,尽管我不知道有人这样做。不过,我想不出有什么充分的理由这样做,因为您会丢失动态类型,并且不妨使用ObjC。


-1

在框架和兼容性方面,我所知道的唯一对iPhone开发具有重要意义的“外部”语言是MonoTouchMonoTouch是一种在iPhone上进行开发的C#/。NET环境。


是的,但是根据新的《 iPhone开发者协议》,我们必须拭目以待,Mono Touch将会变成什么样。
TalkingCode

1
@Holli:现在新的开发协议使MonoTouch变得清晰起来
Dan McClain 2010年

-1

我认为这是不可能的,但是最近我听说了PyMob,这似乎很有趣,因为这些应用程序是用Python编写的,最终输出是各种平台(iOS的Obj-C,Android的Java等)的本地源代码。这当然是非常独特的。网页对其进行了更详细的说明。

我还没有试过,但是很快就会看到。


显然,这将作为商业项目启动。截至目前(2012年9月28日),该网站说:“我们正在接受有限Beta版计划的客户。请与我们联系以进行咨询”。
ccpizza 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.