【问题标题】:Can I write native iPhone apps using Python? [closed]我可以使用 Python 编写原生 iPhone 应用程序吗? [关闭]
【发布时间】:2008-09-04 07:59:57
【问题描述】:

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

【问题讨论】:

  • iPhone 开发人员将此问题标记为已过时(过于本地化),并且尝试解决此问题也引起抱怨它仍然正确。因此,如果您是通过搜索来到这里的,请注意此答案来自 08 年,可能没有正确答案。
  • 进一步解释:Apple 曾经在他们的协议中有一个部分专门列出了允许的编程语言 C、C++、Objective-C 和 Javascript。这引起了很多困惑、怀疑和恐惧。最终,Apple 停止命名这些语言。我知道的一个事实是,即使这已经到位,商店里、正在发布或正在开发中的各种应用程序都以某种方式使用了 Lua 脚本。

标签: iphone python cocoa-touch


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    目前不是,目前唯一可访问 iPhone SDK 的语言是 C/C++、Objective C 和 Swift。

    没有技术原因表明这种情况在未来无法改变,但我不会为短期内发生这种情况而屏住呼吸。

    也就是说,Objective-C 和 Swift 真的并不太可怕……

    2016 年编辑

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

    【讨论】:

    • 我用Objective-C写了一个多功能的iPhone应用,用PyObjC写了一个多功能的Mac应用,不得不说,根据经验,Objective-C的数据语法特别是结构(例如数组和字典)比 Python 的结构更加繁琐和乏味。在 Apple 支持 PyObjC 之前,我基本上拒绝对我的 iPhone 应用程序进行进一步开发。当我尝试开发自上而下的算法流程时,Objective-C 相对冗长乏味的语法让我非常分心。
    • @Dave Verwer:这个答案仍然是最新的吗?
    • @cobbal:那么这个帖子很有误导性.. 纠正它的正确方法是什么?
    • @Max 您是否使用 PyObjC 创建了 Mac 应用程序,并因此比较了用 Python 编写的 Apple 程序与用 Objective-C 编写的 Apple 程序之间的可读性?如果不是,那么您就没有该判断的依据。
    【解决方案3】:

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

    第 3.3.2 节 — 口译员

    旧:

    3.3.2 应用程序本身不得安装或启动其他可执行文件 以任何方式编码,包括没有 通过使用一个限制 插件架构,调用其他 框架、其他 API 或其他。 除非 Apple 另有批准 写作,没有解释的代码可能是 在应用程序中下载或使用 除了被解释的代码 并由 Apple 的文档化 API 和 内置解释器。 尽管有上述规定,与 Apple 的事先书面同意, 应用程序可以使用嵌入式 以有限的方式解释代码,如果 此类使用仅用于提供未成年人 特性或功能是 符合预期和 应用程序的广告目的。

    新功能:

    3.3.2 应用程序不得下载或安装可执行代码。 解释代码只能用于 一个应用程序,如果所有的脚本,代码 和口译员被打包在 应用程序并没有下载。这 上述情况的唯一例外是 下载并运行的脚本和代码 Apple 内置的 WebKit 框架。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        您可能要检查两个框架:KivyPyMob

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

        【讨论】:

        • Kivy 和 PyMob 不生成原生应用
        • 取决于您对“本地”的定义。这个问题暗示了一个定义,它涵盖了为 OSX 编写 python 应用程序,在某种程度上,你现在可以为 iOS 编写它们。
        【解决方案6】:

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

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

        【讨论】:

        • 谢天谢地,该语言已从 3.3.1 中删除!!
        【解决方案7】:

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

        https://github.com/ColdGrub1384/Pyto 也值得研究。

        【讨论】:

          【解决方案8】:

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

          IANAL 等

          【讨论】:

            【解决方案9】:

            BeeWare 是一个开源框架,用于创作原生 iOS 和 Android 应用程序。

            【讨论】:

            • 它仍在开发中,存在问题
            【解决方案10】:

            2019 年更新:

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

            这支持直接从您的 Native Swift/Obj-C 代码导入 Python 库和运行 Python 脚本(即使使用提供的命令行参数)。

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

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

            【讨论】:

              【解决方案11】:

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

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

              即使在最新的 Apple 新闻稿发布后 - rhodes 应用程序(移动 ruby​​)仍然可以在应用程序商店中使用。如果有愿意的开发者社区,我很难相信 tinyPy 或 pyObjC 不会找到一席之地。

              【讨论】:

                【解决方案12】:

                你可以用 PyObjC 做到这一点,当然也可以用越狱的手机。但如果你想让它进入 App Store,他们不会允许,因为它“解释代码”。但是,您也许可以使用Shed Skin,尽管我不知道有人这样做。不过,我想不出有什么好的理由这样做,因为你失去了动态类型,还不如使用 ObjC。

                【讨论】:

                  【解决方案13】:

                  据我所知,在框架和兼容性方面具有半显着支持的 iPhone 开发的唯一重要“外部”语言是 MonoTouch,这是一种用于在 iPhone 上开发的 C#/.NET 环境。

                  【讨论】:

                  • 是的,但是有了新的 iPhone 开发者协议,我们必须拭目以待,看看 Mono Touch 会变成什么样子。
                  • @Holli:现在新的开发协议明确了 MonoTouch
                  【解决方案14】:

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

                  我还没有试一试,但很快就会看看。

                  【讨论】:

                  • 显然这将作为一个商业项目推出。截至目前(2012 年 9 月 28 日),该网站表示:“我们正在接受客户参加有限的 Beta 计划。请联系我们进行咨询”,就是这样。
                  猜你喜欢
                  • 2013-04-29
                  • 2012-12-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-09
                  • 1970-01-01
                  • 2014-10-05
                  相关资源
                  最近更新 更多