首页 文章

有没有办法在Android上运行Python? [关闭]

提问于
浏览
2004

我们正在开发一个S60版本,这个平台有一个很好的Python API ..

但是,在Android上没有关于Python的正式官方,但是由于Jython存在,有没有办法让蛇和机器人一起工作?

25 回答

  • 8

    来自Python for android网站:

    Python for android是一个创建自己的Python发行版的项目,包括你想要的模块,并创建一个包含python,libs和你的应用程序的apk .

  • 191

    您可以使用Termux应用程序:

    注意apt安装python安装python 3.对于python 2,你应该调用apt install python2 .

    这里有一些演示:https://www.youtube.com/watch?v=fqqsl72mASE

    还有github页面:https://github.com/termux

  • 6

    Pygame Subset for Android是Android平台的Pygame功能子集的一个端口 . 该项目的目标是允许创建特定于Android的游戏,并简化从类似PC的平台到Android的游戏移植 . ”

    这些例子包括一个包装在APK中的完整游戏,非常有趣 .

  • 8

    playstore中有一个名为QPython3的应用程序,可用于编辑和运行python脚本 .

    Playstore link

    另一个名为Termux的应用程序,您可以使用命令安装python

    pkg install python
    

    Playstore Link

  • 68

    你可以使用 QPython

    它有一个Python控制台,编辑器,以及包管理/安装程序

    http://qpython.com/

    这是一个包含Python 2和Python 3实现的开源项目 . 您可以直接从github下载源代码和Android .apk文件 .

    QPython 2:https://github.com/qpython-android/qpython/releases

    QPython 3:https://github.com/qpython-android/qpython3/releases

  • 318

    YES!

    一个例子via Matt Cutts来自SL4A - “这是一个用六行Python代码编写的条形码扫描器:

    import android
    droid = android.Android()
    code = droid.scanBarcode()
    isbn = int(code['result']['SCAN_RESULT'])
    url = "http://books.google.com?q=%d" % isbn
    droid.startActivity('android.intent.action.VIEW', url)
    
  • 12

    还有可能运行mosync的python-on-a-chip:google group

  • 11

    另一个选项似乎是pyqtdeploy,引用文档是:

    与Qt一起提供的其他工具一起使用的工具,可以部署使用Python v2.7或Python v3.3或更高版本编写的PyQt4和PyQt5应用程序 . 它支持部署到桌面平台(Linux,Windows和OS X)和移动平台(iOS和Android) .

    根据Deploying PyQt5 application to Android via pyqtdeploy and Qt5它正在积极开发,虽然很难找到工作Android应用程序的示例或如何将所有必需的库交叉编译到Android的教程 . 尽管如此,这是一个有趣的项目!

  • 3

    还有新的Android Scripting Environment(ASE / SL4A)项目 . 它看起来很棒,并且与原生Android组件有一些集成 .

    注意:不再在“积极开发”下,但有些叉子可能会 .

  • 10

    又一次尝试:https://code.google.com/p/android-python27/

    这个直接嵌入你的应用程序apk中的Python解释器 .

  • 19

    作为一个爱好者和Android程序员,我很遗憾地说这不是一个好方法 . 有两个问题 .

    一个问题是Android开发工具不仅仅是一种编程语言 . 很多Android图形都涉及配置显示的XML文件,类似于HTML . 内置的java对象实际上与这个XML布局集成在一起,并且比编写自己的代码从逻辑到位图要容易得多 .

    另一个问题是G1(以及可能在不久的将来可能还有其他Android设备)真的不那么快 . 200 MHz处理器和RAM非常有限 . 即使在Java中,如果你想让你的应用程序非常流畅,你也必须做大量的重写 - 避免更多的对象创建 . Python仍会在移动设备上停留太长时间 .

  • 21

    我使用QPython应用程序 . 它有一个编辑器,一个控制台,你可以用它运行你的Python程序 . 该应用程序是免费的,链接是http://qpython.com/ .

  • 34

    看看BeeWare . 在回答这个问题时,它仍处于早期发展阶段 . 它的目标是能够为所有支持的操作系统(包括Android)使用Python创建本机应用程序 .

  • 80

    一种方法是使用Kivy

    开源Python库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序 .

    Kivy可在Linux,Windows,OS X,Android和iOS上运行 . 您可以在所有支持的平台上运行相同的[python]代码 .

    Kivy Showcase app

  • 3

    我已经发布了针对Android交叉编译Python 2.7.2的说明和补丁,你可以在我的博客上找到它:http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

    编辑:我已开源Ignifuga,我的2D游戏引擎,'s Python/SDL based and it cross compiles for Android. Even if you don' t用它来进行游戏,你可能会从代码和构建器实用程序中获得有用的想法(在Tim之后命名为Schafer ......你知道是谁) .

  • 872

    Kivy


    我想发布这个作为 @JohnMudd 已经回答的内容的延伸(但请跟我一起,因为英语不是我的第一语言)

    从那时起已经有好几年了,Kivy已经发展到v1.9-dev . 在我看来,Kivy的最大卖点是它的跨平台兼容性 . 您可以在本地环境(Windows / * nix等)下进行编码和测试构建,调试和打包您的应用程序,以便在Android / iOS / Mac / Windows设备上运行 .

    使用Kivy自己的KV语言,您可以轻松编写和构建GUI界面(它就像Java XML,而不是TextView等,KV有类似翻译的 ui.widgets ),在我看来很容易采用 .

    目前,Buildozerpython-for-android是建议/打包应用程序的最佳工具 . 我已经尝试过这两种方法,并且可以坚定地说,他们使用Python构建Android应用程序变得轻而易举 . 在控制台/终端/命令提示符下感觉舒适的用户应该没有使用它们的问题,并且他们的指南也有详细记录 .

    此外,iOS是Kivy的另一大卖点,前提是您可以使用相同的代码库,只需通过kivy-ios Homebrew工具在iOS设备上进行测试运行所需的更改,尽管在运行设备之前需要Xcode进行构建(Acode在Xcode中的iOS模拟器目前还不太难解决,Kivy Google Group中的人也非常有帮助 .

    总而言之,具有良好Python知识的用户应该在几周内(如果不是几天)获取基础知识来构建一些简单的应用程序 .

    另外值得一提的是,您可以使用构建捆绑(构建配方)您的Python模块,这样用户就可以真正利用Python带来的许多现有库,例如RequestsPIL等,通过Kivy's extension support .

    有时您的应用程序需要的功能超出了Kivy所能提供的范围 . 在这些情况下,有必要使用外部软件库 . 鉴于Python生态系统的丰富性,已经有很多软件库可以立即导入和使用 .

    最后但并非最不重要的是,如果您打算将Kivy用于更严肃/商业项目,您可能会发现现有模块并不令人满意 . 但是有一些可行的解决方案,"work in progress"为pyjnius for Android,和pyobjus . 用户现在可以通过这些模块访问Java / Objective-C类来控制一些本机API .

    我在Kivy的经验是,它会发现它最适合经验丰富的Python程序员和一些想要快速开发或简单代码库维护的认真程序员 . 它在多个平台上运行良好,虽然不是真正的本土感觉 .

    I do hope some Python app programmers find this information useful and start taking a look at Kivy. It can only get better (with more support and as libraries/modules get ported) if there is great interest from the community.

    附:我与Kivy没有任何关系,我只是一个真正喜欢将Python编码带入移动/跨平台开发的想法的程序员 .

  • 61

    没有看到这个发布在这里,但你可以用Pyside和Qt做到现在Qt可以在Android上运行,感谢Necessitas .

    这似乎是目前相当不错的一部分,但最终可能是一条可行的路线......

    http://qt-project.org/wiki/PySide_for_Android_guide

  • 23

    您可以使用sl4a运行Python代码 . sl4a支持Python,PerlJRubyLua,BeanShell,JavaScript,Tcl和shell脚本 .

    你可以学习sl4a Python Examples .

  • 12

    查看enaml-native,它采用react-native概念并将其应用于python .

    它允许用户使用原生Android小部件构建应用程序,并提供API以使用python中的android和java库 .

    它还与android-studio集成,并分享一些反应良好的开发功能,如代码重新加载和远程调试 .

  • 35

    如果您正在寻找3.4.2或3.5.1的另一个选项是GitHub上的这个存档 .

    Python3-Android 3.4.2Python3-Android 3.5.1

    它目前支持Python 3.4.2或3.5.1以及NDK的10d版本 . 它还可以支持3.3和9c,11c和12

    这很好,你只需下载它,运行make然后你得到.so或.a

    我目前使用它在Android设备上运行原始Python . 通过对构建文件的一些修改,您还可以使x86和armeabi 64位

  • 9

    Google员工也大量写了SL4A .

  • 79

    适用于Android的脚本层

    SL4A做你想要的 . 您可以从他们的站点直接将其直接安装到您的设备上,而不需要root .

    它支持多种语言 . Python是最成熟的 . 默认情况下,它使用Python 2.6,但您可以使用3.2 port . 我已经在Galaxy S2上使用了那个端口用于各种各样的东西,它工作得很好 .

    API

    SL4A为每种支持的语言提供了 android 库的端口 . 该库通过单个 Android 对象提供底层Android API的接口 .

    from android import Android
    
    droid = Android()
    droid.ttsSpeak('hello world') # example using the text to speech facade
    

    每种语言都有相同的API . 您甚至可以在Web视图中使用JavaScript API .

    let droid = new Android();
    droid.ttsSpeak("hello from js");
    

    用户界面

    对于用户界面,您有三个选项:

    • 您可以通过API轻松使用通用的本机对话框和菜单 . 这适用于确认对话和其他基本用户输入 .

    • 您还可以从Python脚本中打开Web视图,然后使用HTML5作为用户界面 . 当您使用Python的Web视图时,您可以在webview和生成它的Python进程之间来回传递消息 . 该UI不是原生的,但它仍然是一个很好的选择 .

    • 对原生Android用户界面有一些支持,但我不确定它有多好用;我只是没用过它 .

    您可以混合选项,这样您就可以拥有主界面的webview,并仍然使用本机对话 .

    QPython

    有一个名为QPython的第三方项目 . 它 Build 在SL4A之上,并引入了一些其他有用的东西 .

    QPython为您提供了更好的UI来管理您的安装,并包含一个小的触摸屏代码编辑器,一个Python shell和一个用于包管理的PIP shell . 他们还有一个Python 3端口 . 这两个版本都可以从Play商店免费获得 . QPython还捆绑了Android项目中的一堆Python库,包括Kivy,所以它不仅仅是SL4A .

    请注意,QPython仍在开发他们的SL4A分支(不过,说实话并不多) . 主要的SL4A项目本身已经死了 .

    有用的链接

  • 34

    使用SL4A(已经在其他答案中已经提到过),你可以run一个完整的web2py实例(其他python web frameworks也可能是候选者) . SL4A不允许您使用本机UI组件(按钮,滚动条等),但它确实支持WebViews . WebView基本上只是一个指向固定地址的条带化Web浏览器 . 我相信原生Gmail应用使用WebView而不是常规小部件路径 .

    这条路线会有一些有趣的特点:

    • 在大多数python web框架的情况下,你可以实际开发和测试,而无需使用Android设备或Android模拟器 .

    • 无论您最终为手机编写的Python代码也可以放在公共网络服务器上,只需很少(如果有)修改 .

    • 你可以利用所有疯狂的网络内容:查询,HTML5,CSS3等 .

  • 69

    Chaquopy

    Chaquopy是Android Studio基于Gradle的构建系统的插件 . 它侧重于close integration与标准的Android开发工具 .

    • 它提供了完整的API来调用Java from PythonPython from Java,允许开发人员使用最适合其应用程序的每个组件的语言 .

    • 它可以自动下载PyPI packages并将它们构建到应用程序中,包括选定的本机程序包,如NumPy .

    • 它支持从Python完全访问所有Android API,包括本机用户界面工具包(example pure-Python activity) .

    这是一个商业产品,但它可以免费用于开源使用,并且将始终保持这种状态 .

    (我是这个产品的创造者 . )

  • 17

    不是现在,你很幸运能让Jython尽快上班 . 如果您现在计划开始开发,那么现在只需坚持使用Java就可以了 .

相关问题