我可以使用Python编写原生iPhone应用程序吗?

时间:2008-09-04 07:59:57

标签: iphone python cocoa-touch

使用PyObjC,您可以使用Python为OS X编写Cocoa应用程序。我可以使用Python编写本机iPhone应用程序吗?如果是,如何编写?

14 个答案:

答案 0 :(得分:53)

由于Jay Freeman(saurik)的出色工作,您也可以在iPhone上使用PyObjC。请参阅iPhone Applications in Python

请注意,目前这需要越狱的iPhone。

答案 1 :(得分:35)

目前还没有,目前唯一可用于访问iPhone SDK的语言是C / C ++,Objective C和Swift。

没有技术上的理由说明为什么将来不会改变,但我不会在短期内屏住呼吸。

那就是说,Objective-C和Swift真的不太可怕......

  

2016年编辑

     

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

答案 2 :(得分:23)

是的,你可以。您在tinypy(受限制的Python)中编写代码,然后使用tinypy将其转换为C ++,最后使用XCode将其编译为本机iPhone应用程序。 Phil Hassey发布了一款名为Elephants的游戏!使用这种方法。这里有更多细节,

http://www.philhassey.com/blog/2009/12/23/elephants-is-free-on-the-app-store/

答案 3 :(得分:23)

现在看来这是开发人员可以做的事情:iOS开发者协议昨天发生了变化,并且似乎已经被修改,以便在您的应用程序中嵌入Python解释器合法:

第3.3.2节 - 解释器

<强>旧

  

3.3.2应用程序本身可能无法安装或启动其他可执行文件   任何方式的代码,包括没有   通过使用a的限制   插件架构,调用其他   框架,其他API或其他。   除非苹果公司另行批准   写作,没有解释代码可能   下载或在应用程序中使用   除了解释的代码   并由Apple的Documented API和   内置口译员。   尽管有上述内容,但仍有   Apple事先书面同意,   应用可能使用嵌入式   如果有限的解释代码   这种用途仅用于提供未成年人   功能或功能   符合预期和   申请的广告目的。

  

3.3.2应用程序可能无法下载或安装可执行代码。   解释的代码只能用于   应用程序,如果所有脚本,代码   和口译员包装在   申请而非下载。该   唯一的例外是上述情况   下载和运行的脚本和代码   Apple的内置WebKit框架。

答案 4 :(得分:21)

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

您可能需要结帐两个框架:KivyPyMob

请考虑this question的答案,因为它们比这更新。

答案 5 :(得分:20)

iOS开发者协议的更新意味着您可以使用您喜欢的任何内容,只要您符合开发者指南即可。第3.3.1节限制了开发人员可用于iOS开发的内容,已完全删除。

来源:http://daringfireball.net/2010/09/app_store_guidelines

答案 6 :(得分:8)

Pythonista具有导出到Xcode功能,允许您将Python脚本导出为构建独立iOS应用程序的Xcode项目。

答案 7 :(得分:5)

iPhone SDK协议对于您是否甚至被允许运行脚本语言(在WebView的Javascript之外)也相当模糊。我的阅读是没关系 - 只要您执行的脚本都没有从网络下载(因此预安装和用户编辑的脚本似乎没问题)。

IANAL等等。

答案 8 :(得分:2)

从技术上讲,只要未下载解释的代码(不包括JavaScript),该应用程序即可获得批准。 Rhomobiles“Rhodes”框架就是这样,捆绑移动Ruby,Rails的轻量级版本,以及通过app-store分发的应用程序。因为解释器和解释的代码都被打包到最终的应用程序中 - Apple没有发现它令人反感。

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

即使在最新的苹果新闻发布之后 - 罗德应用程序(移动红宝石)在应用程序商店仍然可行。如果有一个愿意参与的社区,我会发现很难相信tinyPy或pyObjC找不到位置。

答案 9 :(得分:1)

你可以使用PyObjC,当然是越狱手机。但是如果你想进入App Store,他们就不会允许它,因为它“解释代码”。但是,您可以使用Shed Skin,但我不知道有人这样做。我不能想到有任何理由这样做,因为你失去了动态类型,并且可能也使用ObjC。

答案 10 :(得分:1)

我认为之前不可能,但我最近听说过PyMob,这看起来很有趣,因为应用程序是用Python编写的,最终输出是各种平台的原生源代码(iOS的Obj-C,Android的Java等) 。这当然很独特。 This网页更详细地解释了它。

我还没拍过,但很快就会看一眼。

答案 11 :(得分:1)

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

答案 12 :(得分:0)

在框架和兼容性方面,我所知道的iPhone开发唯一重要的“外部”语言是MonoTouch,这是一个用于在iPhone上进行开发的C#/ .NET环境。 / p>

答案 13 :(得分:0)

2019更新:

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

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

我的公司实际上是在本机iOS应用程序中包装我们的基础结构(最初是用Python编写的)!它运行良好,并且可以通过客户端-服务器模型轻松实现各部分之间的通信。

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