【问题标题】:combining html front-end and python "back-end" in mobile app在移动应用程序中结合html前端和python“后端”
【发布时间】:2013-09-18 23:57:24
【问题描述】:

我的应用程序有一个基于 html 的前端,并在后端使用 python 逻辑。这个应用程序需要离线运行,而不是连接到互联网,所以这里的“后端”并不是指远程运行的服务器,而是在与浏览器/html 相同的应用程序中并行运行的 python 逻辑引擎。对于 Windows 或 Mac 桌面应用程序,我构建了一个 Chromium Embedded Framework 应用程序,然后启动一个子进程,该子进程运行一个使用 py2exe(或 py2app)构建的 CherryPy python 应用程序。然后客户端和服务器使用普通的http进行通信。

我想在 iOS 和 Android 上实现相同的目标。我研究了几种替代方案,但似乎没有什么能完全满足我的需要。

Kivy 很接近,但据我所知,它不提供浏览器/html 前端,而是在 OpenGL 之上提供自己的布局引擎。它有一个扩展机制,但似乎更多的是扩展python端,而不是前端。

另一方面,我可以从PhoneGap 开始,然后添加一个python 库作为扩展(可能使用Kivy 的python 移动库构建)。或者就此而言,我可以编写一个嵌入浏览器并使用 python 库构建的常规 C++ 应用程序。

另一方面,我尝试使用各种 python-to-javascript 转换器将后端逻辑转换为可以直接与 PhoneGap 一起使用的东西,但考虑到我所有的 python 逻辑,这种方法变得相当困难有——其中一些并不那么容易转换。

你知道在同一个应用中显示 html 和运行 python 逻辑的应用吗?

【问题讨论】:

  • @CzarekTomczak,谢谢,但我需要一个移动解决方案。让 CEF 为我的桌面应用程序使用我自己的 Python 进程(因此不需要 CEF Python)没有问题。

标签: android python ios mobile browser


【解决方案1】:

你可以做一个非常简单的 kivy 应用程序,它会启动一个服务(在里面你会做你的“服务器”端,用一个像烧瓶或瓶子这样的小引擎,但我想cherryPy 也应该工作),然后在“kivy”应用程序的 main.py,不要导入 kivy,只需导入 webbrowser 并启动浏览器窗口到 localhost:your port。这将使用安卓浏览器。

edit: 哦,服务现在只有android,显然ios 7 也支持它们,但是kivy-ios 还没有更新以使用它们。

【讨论】:

  • 谢谢,这听起来是个不错的解决方案。我一直在寻找一种特定于 kivy 的方式来嵌入网络浏览器,但我应该考虑尝试标准的 python 网络浏览器。你知道什么时候可以更新 kivy-ios 以使用服务吗?
  • 我刚刚阅读了 ios 7“新功能”文档,并不清楚 ios 7 中允许将网络服务器作为服务的新功能。这在 ios 7 之前是不可能的吗?在 ios 7 中它是真的可能的吗?
  • 嗯,我只是研究了一下,我不确定了,我在某个地方读到了这种情况,但我可能误解了更改的实际范围。对不起。
  • 没关系,但我想了解您是否认为它在 ios 上已经可能,或者从不可能并且可能仍然不可能。
  • 对于我在研究中看到的情况,我相信这在技术上是可行的(并且至少有几个版本),但是你必须使用苹果认为合理使用后台工作的 api,因为voip,位置,音乐。如果你滥用他们做一些不相关的事情,苹果很可能会拒绝该应用程序。另一种选择是应用程序进入后台后的“1000 万”时间,但这可能不适合很多用例,以及您描述的那个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2020-06-17
  • 2017-05-30
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 2021-02-18
相关资源
最近更新 更多