使用PyObjC,您可以使用 Python 为 OS X 编写 Cocoa 应用程序。我可以使用 Python 编写本机 iPhone 应用程序吗?如果可以,如何?
14 回答
由于 Jay Freeman (saurik) 的出色工作,您也可以在 iPhone 上使用 PyObjC。请参阅Python 中的 iPhone 应用程序。
请注意,目前这需要越狱的 iPhone。
目前还没有,目前唯一可以访问 iPhone SDK 的语言是 C/C++、Objective C 和 Swift。
没有技术上的理由说明这种情况在未来不会改变,但我不会为这种情况在短期内发生而屏住呼吸。
也就是说,Objective-C 和 Swift 真的并不太可怕……
2016年编辑
现在可以使用带有 NativeScript 框架的 Javascript。
现在看来,这是允许开发人员做的事情:iOS 开发人员协议昨天发生了更改,并且似乎已经以某种方式进行了修改,以使在您的应用程序中嵌入 Python 解释器是合法的:
第 3.3.2 节 — 口译员
老的:
3.3.2 应用程序本身不得以任何方式安装或启动其他可执行代码,包括但不限于通过使用插件架构、调用其他框架、其他API或其他方式。除非 Apple 另有书面批准,否则不得在应用程序中下载或使用任何解释代码,但由 Apple 文档化 API 和内置解释器解释和运行的代码除外。尽管有上述规定,但在获得 Apple 事先书面同意的情况下,应用程序可以以有限的方式使用嵌入式解释代码,前提是此类使用仅用于提供与应用程序的预期和宣传目的一致的次要特性或功能。
新的:
3.3.2 应用程序不得下载或安装可执行代码。如果所有脚本、代码和解释器都打包在应用程序中并且未下载,则解释的代码只能在应用程序中使用。上述情况的唯一例外是由 Apple 的内置 WebKit 框架下载和运行的脚本和代码。
是的你可以。您使用 tinypy(受限 Python)编写代码,然后使用 tinypy 将其转换为 C++,最后使用 XCode 将其编译为原生 iPhone 应用程序。Phil Hassey 发布了一款名为 Elephants 的游戏!使用这种方法。这里有更多细节,
http://www.philhassey.com/blog/2009/12/23/elephants-is-free-on-the-app-store/
iOS 开发者协议的更新意味着你可以使用任何你喜欢的东西,只要你符合开发者指南。第 3.3.1 节限制了开发人员可以用于 iOS 开发的内容,已被完全删除。
资料来源:http ://daringfireball.net/2010/09/app_store_guidelines
Pythonista具有导出到 Xcode 功能,允许您将 Python 脚本导出为构建独立 iOS 应用程序的 Xcode 项目。
iPhone SDK 协议对于是否允许您运行脚本语言(在 WebView 的 Javascript 之外)也相当模糊。我的阅读是没问题 - 只要您执行的脚本都不是从网络下载的(因此预安装和用户编辑的脚本似乎没问题)。
IANAL 等
BeeWare是一个用于创作原生 iOS 和 Android 应用程序的开源框架。
2019 年更新:
虽然 Python-iOS 开发相对不成熟,并且可能会阻止(afaik)您的应用程序拥有可以在 Apple 支持的开发语言中实现的原生 UI 和功能,但 Apple 现在似乎允许在 Native Swift/Obj-C 中嵌入 Python 解释器应用。
这支持直接从您的 Native Swift/Obj-C 代码导入 Python 库和运行 Python 脚本(即使使用提供的命令行参数)。
我的公司实际上是在一个原生 iOS 应用程序中包装我们的基础设施(最初是用 Python 编写的)!它工作得很好,部件之间的通信可以通过客户端-服务器模型轻松实现。
如果您想尝试在 iOS 应用程序中运行 Python 脚本,这是 Beeware 提供的一个不错的库,带有 cookiecutter 模板:https ://github.com/beeware/Python-Apple-support/tree/3.6 。
从技术上讲,只要未下载解释代码(不包括 JavaScript),该应用程序就可能被批准。Rhomobiles“Rhodes”框架就是这样做的,它捆绑了移动 Ruby、Rails 的轻量级版本和您的应用程序,以便通过应用商店分发。因为解释器和被解释的代码都被打包到最终的应用程序中——Apple 认为这并不令人反感。
http://rhomobile.com/products/rhodes/
即使在最新的苹果新闻稿之后 - 罗德应用程序(移动红宝石)仍然可以在应用程序商店中使用。如果有一个愿意的开发者社区,我很难相信 tinyPy 或 pyObjC 不会找到一席之地。
你可以用 PyObjC 来做到这一点,当然也可以用越狱的手机。但如果你想让它进入 App Store,他们不会允许,因为它“解释代码”。但是,您也许可以使用Shed Skin,尽管我不知道有人这样做。不过,我想不出任何好的理由这样做,因为你失去了动态类型,还不如使用 ObjC。
我所知道的在框架和兼容性方面具有半显着支持的 iPhone 开发的唯一重要“外部”语言是MonoTouch,这是一种用于在 iPhone 上开发的 C#/.NET 环境。
我认为这是不可能的,但我最近听说了 PyMob,这似乎很有趣,因为这些应用程序是用 Python 编写的,最终输出是各种平台的原生源代码(iOS 的 Obj-C,Android 的 Java 等)。这当然是非常独特的。这个网页更详细地解释了它。
我还没有给它一个镜头,但很快就会看看。