【问题标题】:Programming Android apps in jython在 jython 中编写 Android 应用程序
【发布时间】:2012-06-22 14:57:51
【问题描述】:

前几天我遇到了一个名为 Jython 的 Python 实现。
使用 Jython,您可以使用 Python 编写 Java 应用程序并将它们编译为纯 Java。

我想知道:Android 编程是用 Java 完成的。
那么,是否可以使用 Jython 制作 Android 应用程序?

【问题讨论】:

  • Python 与 java 的互操作性并不出色。如果你想要原生和漂亮的 ui,你不得不使用 java/scala。如果你对非原生 ui 没问题,你可以使用 qt for android + python wrapper + 在 python 中编写代码。
  • @tabbykitten,Python 和 Java 之间的互操作正是 Jython 所做的 所提供的。
  • 你能创建扩展 android.app.Activity 的 Jython 类吗?
  • @tabbykitten 为了清楚起见,最好这样问:Jython 是否允许您编写 Java 类(或特定 Java 类)的 Python 子类?是的。 Yes, it does。 “编写 Jython 类”有点模棱两可,因为 Jython 只是一个 Python 实现(不是 OP 所说的方言),所以它可能意味着一个构成 jython 本身 一部分的类(这很简单可以继承 Java 类,因为 Jython 是用 Java 编写的)。
  • 真正的问题,至少对于当前的 Jython,在整个线程中完全被忽略了,包括公认的答案:Jython 也生成和加载字节码在运行时。天生的。即使它可以将其作为 dexed 字节码或以某种方式在运行时对其进行 dex 处理,Android 也不允许在运行时加载新字节码 (AFAIK)。不幸的是,如果没有重大的重新设计,Android 上的 Jython 目前是不可行的。见sourceforge.net/p/jython/mailman/message/36752389

标签: android python jython


【解决方案1】:

是的,你可以。

在您的计算机上测试您的 python 代码,如果没问题,复制到您的 Android 设备。

从 Google Play 商店安装 Pydroid 并在应用程序中再次编译您的代码,您的应用程序将准备就绪并运行。

在 Pydroid 中使用 pip 安装任何依赖项。

PS:您需要配置您的 Android 设备以安装来自 Play 商店之外的 APK。

【讨论】:

    【解决方案2】:

    我特别喜欢Kivy

    Scripting Layer for Android (SL4A) 允许您直接在 Android 设备上编辑和执行脚本和交互式解释器,从而将脚本语言引入 Android。

    【讨论】:

    • 把这个打包成*.apk很容易吗?
    【解决方案3】:

    遗憾的是没有。

    手机只有 Java ME(微型版),而 Jython 需要 Java SE(标准版)。我没有 Jython 端口,也没有足够的兴趣让它值得努力。

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
    • @A.J.问题是“是否可以在 Android 中运行 Jython”。所以,这是一个答案。用绝对不正确的解释,是的,但它是一个答案。
    • @Gangnus,老实说,这个近距离投票很笼统,我之所以这么说是因为没有证据或推理,它可以很容易地封装在评论中,而 OP 无法做出,因此票数接近。
    • Android 使用 Java ME。
    【解决方案4】:

    是和不是。使用 jython,您可以使用 java 类为 JVM 进行编译。但是Android使用的是DVM(Dalvik Virtual Machine),编译出来的代码就不同了。您必须使用工具将 JVM 代码转换为 DVM。

    【讨论】:

      【解决方案5】:

      这是不可能的。您不能将 jython 与 android 一起使用,因为 DVM 不理解它。 DVM 不是 JVM。

      【讨论】:

      • 谢谢@Burhan Khalid,在我未来的 StackOverFlow 帖子中,我会小心这些小而重要的事情。
      • 我已经承认了我的英语写作错误,但现在仍然有人反对我。 :( 犯错是人之常情,重要的是从错误中吸取教训。
      • 那些应用程序正在使用“jythonroid”,即适用于 Android 的 Jython... 怎么会?有人突然冒出来,对你一无所知的事情投了反对票……呵呵:-p。
      • 兄弟你真的需要努力研究你的发现。第一个 no where is written there that the app is using jython... 第二个 They are using python... 你可以像我告诉你的那样在 android 中运行 python/jython 但你需要对 android 应用一些不同的处理,最后一个 There is a hug difference between python and jython
      【解决方案6】:

      Jython 不会编译为“纯 java”,它会编译为 java 字节码 - 即*.class 文件。为了为 Android 开发,进一步将 java 字节码编译为 Dalvik 字节码。这意味着,是的,Jython 可以让您使用 Python 开发 Android,前提是您可以让它与 Android SDK 配合使用(我没有亲自尝试过,所以我不知道这实际上有多难)- 你确实需要确保你不依赖任何 Android 不提供的 Java API,并且可能需要有一些当您运行 jython 时,Android API .class 文件周围。除了这些琐事之外,您的核心想法应该可行 - 事实上,Jython 确实可以用 Python 编写与运行在 JVM 上的任何其他东西交互的代码。

      【讨论】:

      • 根据wiki.python.org/jython/JythonFaq/…,jython 需要 JME 而不是 JSE,并且还没有到前者的端口。那么这个答案是纯理论还是真的有人做过?
      • @TobiasKienzler 答案在很大程度上是理论上的——我确实在答案中说我没有尝试过这个,让 Jython 和 Android 工具一起工作可能是一个问题。也就是说,我认为 JME/JSE 的区别在这里并不重要,因为 Python->Java 字节码步骤将在在开发机器上完成,而不是在 Android 设备上。 Java SE 可在 Android SDK 和更新的 Android Studio 支持的每个平台上使用。
      • 感谢您的回复 - 顺便说一下,我希望使用 jython 进行原生 android 开发...
      • Android 和 Java 微版不一样。 JME 用于“前智能手机”,就像 2000 年代初期的普通诺基亚一样。 Android 是完全不同的东西,Jython 页面上的常见问题解答项目在这个问题上具有误导性。
      【解决方案7】:

      只要它编译为纯 java(有一些限制,因为某些 API 不可用),但我怀疑 python 在开发特定于 android 的东西(如活动和 UI 操作代码)中会有多大用处。

      您还必须注意应用程序的大小 - 这是移动开发的严重限制。

      【讨论】:

      • 考虑到 jython 代码的基于 javac 的输出不包括 python 运行时,而只有 jvm 代码,那怎么办?谈谈应用程序的大小。
      猜你喜欢
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-13
      • 1970-01-01
      • 2012-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多