25 题: 有没有办法在Android上运行Python?

在...创建的问题 Thu, Nov 8, 2018 12:00 AM

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

然而,在Android上没有关于Python的官方消息,但由于 Jython 存在,是否存在让蛇和机器人一起工作的方法??

    
2097
  1. 让我们测试一下Joel关于谷歌排名SO帖子更新可能性的理论。请参阅下文或此: google-opensource.blogspot.com/2009 /06 /...
    2009-06-10 05:14:57Z
  2. 鉴于这篇文章的内容很少,如果排名很好,那一定是一个巨大的期望。我非常希望这个项目能够做到最好,我自己更像是一个pythonista而不是Java人,用这种语言编写Android代码将成为原型设计阶段的一部分。
    2009-06-10 12:51:05Z
  3. 虚拟机内字节码应用程序内的脚本语言,它表示速度慢。难怪为什么这些手机很快就需要双核甚至四核。我不是在讨厌Android或Python ......
    2012-02-13 09:09:03Z
  4. @ e-satisf you right。我是python及其技术性的新手,我习惯于编译C /C ++语言。但是,虚拟机内部的虚拟机仍然不是最快的,并且可能竞争成为执行代码的最慢的方式。肯定它有它的实用性。我不讨厌Python和Android,但是......
    2012-02-14 02:17:57Z
  5. @ user457015我认为你应该真正了解现代JVM的实现方式,它们无处接近到“脚本”或“解释” “ 目前为止。如果有的话,Java现在只比良好/完美编写的 C /C ++代码慢约10-25%。而且用Java搞错了写作的地方......
    2012-02-14 15:39:34Z
  6. 醇>
    25答案                              25 跨度>                         

    一种方法是使用 Kivy

      

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

      

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

    Kivy Showcase app

        
    962
    2014-08-31 22:09:40Z
    1. 如果您使用Kivy,这里有一个工具可帮助您将项目打包成APK: github.com/kivy/python-for-android
      2012-01-09 04:42:57Z
    2. 过去一周我一直在玩Kivy尝试写游戏。他们的主要开发人员非常快速地回答有关IRC的问题,但是如果你在Kivy之前编程了一个GUI会让你说WTF相当多。一些对我来说很奇怪的未记录事情的例子:即使事件发生在他们的区域之外,所有窗口小部件都会获得每个on_touch_down事件,没有窗口小部件有draw()方法,几乎​​所有事件都是通过他们自己组建的自定义属性上的自定义观察者模式发生的(请注意,这些名称与Python的属性共享,但不是相同)
      2012-01-30 20:41:52Z
    3. 现在也有iOS支持!
      2012-06-30 07:00:50Z
    4. 现在,差不多整整一年后,支持会更好吗?这里有任何显着的改进吗?
      2012-11-17 02:32:39Z
    5. 另一年,该死的谷歌,他们似乎喜欢网站的所有python,对Android中的python没有爱。
      2013-04-05 17:40:33Z
    6. 醇>

    还有新的 Android脚本环境(ASE /SL4A)项目。它看起来很棒,并且与原生Android组件有一些集成。

    注意:不再处于“主动开发”状态,但可能会有一些分叉。

        
    331
    2018-02-19 04:49:05Z
    1. 是的,但是他们必须安装ASE,这不是一个让你在没有安装任何东西的情况下在python中编写Android应用程序的解决方案(普通用户将全部为“wtf”这是ASE的事吗?)
      2010-11-26 18:30:15Z
    2. 此外,ASE是一个受限制的环境;即使预先安装了ASE,也无法编写成熟的Android应用程序。请参见 stackoverflow.com/questions/2076381
      2011-01-23 21:36:13Z
    3. 我认为它已重命名为SL4A。
      2012-12-04 21:25:50Z
    4. 如果您愿意,可以使用SL4A编写应用程序,打包它们甚至在Play商店中销售它们。自上面的评论发布以来,情况一直很顺利。如果你想在Android上使用Python,那么在SL4A上运行的PY4A可能是最好的选择。
      2013-03-09 17:53:26Z
    5. 我确认,SL4A现在允许编写准备使用的应用程序包,我尝试用perl工作
      2015-03-01 15:32:36Z
    6. 醇>

    是的! : Android脚本环境

    通过SL4A 通过Matt Cutts 的示例 - “这是一个条形码用六行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)
    
        
    203
    2019-01-15 02:29:49Z
    1. s /YES /meh。也许/......它非常有限。什么图形或多点触摸?一个大的NO。
      2010-10-23 09:09:48Z
    2. @ gcb你不能使用普通的android小部件集,但你可以使用“webviews”(例如本机gmail应用程序使用的)。 /DIV>
      2012-03-16 16:10:21Z
    3. golfed:import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT']))
      2012-12-28 06:20:47Z
    4. @ gdw2,原生Gmail应用程序肯定只使用WebView来解析电子邮件,而不是实际用户界面。这使比较有点荒谬。
      2014-07-21 21:55:16Z
    5. 醇>

    Google员工还大量编写了 SL4A

        
    84
    2017-08-16 08:51:58Z

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

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

        
    83
    2017-02-01 10:09:17Z
    1. 我的Droid X上有几个方面被打破了(按钮或触摸屏,不记得了),所以我对这条路线的影响不大。
      2011-10-05 21:56:49Z
    2. 醇>

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

    编辑:我已经开源了 Ignifuga ,我的2D游戏引擎,基于Python /SDL,它可以交叉编译Android系统。即使你没有将它用于游戏,你也可以从代码和构建器实用程序中获得有用的想法(在Tim之后命名为Schafer ......你知道是谁)。     
    73
    2012-02-16 17:10:06Z
    1. 令人印象深刻。 +1为此。不接受,因为你不可能用这个为公众写任何东西。
      2011-10-13 14:14:25Z
    2. 如果你的意思是你不能用它做图形应用程序,当然你绝对可以做更多的工作。我实际上将此端口与SDL 1.3结合使用,从python解释器转到交互式应用程序并非易事,但可以完成。
      2011-10-14 02:38:47Z
    3. 醇>

    适用于Android的脚本层

    SL4A 可以满足您的需求。您可以从他们的站点直接将其直接安装到您的设备上,而不需要root。

    它支持多种语言。 Python是最成熟的。默认情况下,它使用Python 2.6,但有一个 3.2端口你可以改用。我已经将这个端口用于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。您甚至可以在网络视图中使用JavaScript API。

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

    用户界面

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

    • 您可以轻松地使用通用的本机对话框和菜单 API。这适用于确认对话和其他基本用户输入。
    • 您还可以从Python脚本中打开webview,然后使用HTML5 用于用户界面。当您使用Python的Web视图时,您可以通过 在webview和Python进程之间来回传递消息 催生了它。用户界面不是原生的,但它仍然是一个很好的选择 有。
    • 本机有一些支持Android用户界面,但我不是 确定它的工作原理;我只是没用过它。

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

    QPython

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

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

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

    有用的链接

    71
    2018-05-09 20:03:26Z
    1. 你能使用其中任何一个从终端或任务器运行python脚本吗?我找不到方法:(
      2015-08-26 11:27:41Z
    2. 您可以从Tasker启动SL4A脚本。 此页上有一些示例,其中包含从Tasker启动的Python代码段。但这确实是一个完全不同的问题。
      2015-09-01 19:05:12Z
    3. 醇>

    将作为的Python 爱好者和Android程序员,我感到非常难过,说这这不是一个好方法。有两个问题。

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

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

        
    64
    2014-08-31 22:11:05Z
    1. Android手机上没有单个java字,它在打包过程中被编译为字节码。速度不是问题:谷歌可以提供从python代码生成正确字节代码的工具(比如Jython)。 BTW,Dalvik不是Java VM,所以这不是Java VS Python。
      2008-11-02 18:20:13Z
    2. JAVA字节码仍然需要由JVM处理,而Java语言无论如何都需要垃圾收集器。实际速度只能来自C ++。
      2014-04-29 11:40:12Z
    3. @ Touzen 2多年后,我们现在正在运行Intel Atom处理器或八核处理器。 ;)
      2015-04-10 06:13:56Z
    4. 由于它们能够绘制的功率不同,手机总是比台式机慢一个数量级。但是,不要放弃Python用于移动设备,因为通常只有一小部分代码是负责任的le用于处理器密集型工作,可以通过用另一种语言重写它来优化这一部分。
      2015-12-05 06:05:55Z
    5. 顺便说一句,Google推动Kotlin这一天 - 这对于大多数用户来说是一种非常未知的语言 - 显然它可以支持除Java以外的其他语言(我是Java开发人员和Python粉丝)。所以我认为答案是政治性的,而不是实际的。
      2018-07-11 12:55:12Z
    6. 醇>

    Kivy


    我想发布此内容作为 @JohnMudd 已经回答的内容的扩展(但请耐心等待,因为英语不是我的第一语言

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

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

    目前 Buildozer python-for-android 是构建/打包应用程序的最佳推荐工具。我已经尝试过它们并且可以坚定地说它们使用Python构建Android应用程序变得轻而易举。在控制台/终端/命令提示符下感到舒服的用户在使用它们时应该没有问题,并且他们的指南也有很好的文档记录。

    此外,iOS是Kivy的另一大卖点,前提是您可以使用相同的代码库,只需对iOS设备上的测试运行进行少量更改,通过 kivy-ios Homebrew工具,虽然构建需要Xcode才能在他们的设备上运行(AFAIK Xcode中的iOS模拟器目前不适用于x86架构构建)。还有一些依赖性问题必须在Xcode中手动编译和摆弄才能成功构建,但是它们不会太难解决,并且 Kivy Google Group 也非常有帮助。

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

    另外值得一提的是,您可以使用构建捆绑(构建配方)Python模块,这样用户就可以真正利用Python带来的许多现有库,例如请求&通过 PIL 等-kivy.ext.html#module-kivy.ext“rel =”noreferrer“> Kivy的扩展支持。

      

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

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

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

    我希望一些Python应用程序程序员发现这些信息很有用,然后开始看看Kivy。如果有很大的兴趣,它只能变得更好(有更多的支持和库/模块被移植)社区。​​ strong>

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

        
    40
    2018-02-08 03:56:33Z
    1. 我刚刚从其网站下载了Kivy。显示对Python 3.4 32和64位的支持,以及触摸输入工作的演示。
      2015-07-29 02:49:34Z
    2. @ codeReview,我一直只使用Kivy和Python2,并且没有Python3的经验,一切运行顺畅吗?
      2015-07-29 06:59:10Z
    3. 我很快就会让你知道。但是我没有使用CPython 3.4命令shell .py文件之外的Python经验来快速解决计算或算法问题。这将是我的第一个带GUI的应用程序。我需要阅读更多文档,了解Kivy语言,并仔细遵循安装步骤,因此我知道如何将Kivi安装到我的 Python IDE的首选并打包APK以推送到Android。这是一个多步骤的过程,所以当我说的时候可能不会很快。
      2015-07-29 09:33:06Z
    4. @ codeReview,祝您旅途愉快。如果这是您的第一个应用程序,我强烈建议您使用 .kv 作为布局文件。它就像一个yaml或简单的树文件来定义布局小部件。如果您的应用是多屏幕/布局,请使用ScreenManager,因为这将节省大量时间。另外一条建议是阅读他们的邮件列表,那里有一群知识渊博的人愿意帮助你。
      2015-07-29 10:04:29Z
    5. @ codeReview,而不是向Kivy的演示应用程序学习,你可以获得更多的见解,搜索一些现有的kivy应用程序,看看人们如何管理“小部件”和回调在现实世界中。 Kivy根本不难学,我会说在学习曲线方面要比在Java + Android或Objective-C + iOS中更容易
      2015-07-29 10:06:57Z
    6. 醇>

    目前还没有,你很幸运能让Jython尽快上班。如果您现在计划开始开发,那么现在只需坚持使用Java就可以了。

        
    37
    2013-03-23 14:58:45Z

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

    这条路线会有一些有趣的功能:

    • 在大多数python Web框架的情况下,您实际上可以在不使用Android设备或Android模拟器的情况下进行开发和测试。
    • 无论您最终为手机编写什么Python代码,也可以将其放在公共网络服务器上,只需很少(如果有)修改。
    • 您可以充分利用所有疯狂的网页内容:查询,HTML5,CSS3等。
    36
    2016-01-26 05:48:09Z
    1. Cherrypy运行良好,支持ws4py websocket。 SL4A也可以使用瓶子。
      2013-02-13 01:28:35Z
    2. 醇>

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

        
    26
    2015-01-13 00:35:57Z
    1. 现在qpython添加了Django支持!这就是我需要的一切!太神奇了!
      2013-10-07 14:36:39Z
    2. 醇>

    您可以使用 Termux 应用程序:

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

    此处的一些演示: https://www.youtube.com/watch?v=fqqsl72mASE

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

        
    24
    2017-01-20 11:36:47Z
    1. 对于Termux,
      + 1。绝对美妙的工作环境。回购中的精选包装选择,方便的音量按钮快捷方式。这是我用过的手机上最接近Debian的东西。
      2018-07-29 03:57:44Z
    2. 醇>

    来自 Python for android 网站:

      

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

        
    23
    2012-01-09 04:46:53Z
    1. @ e-satisf:感谢您的评论。我没有看到我正在复制哪个答案。我猜你认为PFA和Kivy是一样的。虽然它是在Kivy项目下托管的,但您甚至不必使用Kivy来使用PFA。
      2012-01-09 22:46:51Z
    2. 在底部点检查@ tito删除的答案到PFA。另外,没有kivy运行PFA的兴趣不大,因为它是你唯一的工具包。
      2012-01-10 00:55:53Z
    3. 这不是因为kivy目前是唯一可用的工具包(有些人正在努力将其他工具归类),而不是复制工具包。请考虑其他选项as-it,而不是将所有选项合并为一个帖子:|
      2012-03-16 14:34:47Z
    4. 醇>

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

    这个直接在您的应用apk中嵌入Python解释器。

        
    18
    2012-05-09 15:44:49Z
    1. 自2014年以来尚未更新。
      2019-05-15 10:21:09Z
    2. 醇>

    您可以使用 sl4a 运行Python代码。 sl4a支持Python, Perl JRuby Lua ,BeanShell,JavaScript, Tcl 和shell脚本。

    您可以在 Python示例中学习sl4a。

        
    14
    2015-01-13 00:34:26Z
    1. 自2015年以来尚未更新。
      2019-05-15 10:23:46Z
    2. 醇>

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

        
    14
    2016-02-15 13:35:25Z
    1. 自2013年以来未更新。
      2019-05-15 10:22:19Z
    2. 醇>

    Chaquopy

    Chaquopy 是Android Studio基于Gradle的构建系统的插件。它着重于与标准Android开发工具的紧密集成

    • 它提供了完整的API来调用来自Python的Java 或 Python中的Python ,允许开发人员使用最适合他们每个组件的语言应用

    • 它可以自动下载 PyPI包并构建它们进入应用程序,包括选定的原生包,如NumPy。

    • 它支持从Python完全访问所有Android API,包括本机用户界面工具包(示例纯Python活动)。

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

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

        
    14
    2018-02-16 17:12:15Z

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

    Playstore链接

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

    安装python  
    pkg install python
    

    Playstore Link

    如果你想开发应用程序,有 Python Android脚本层(SL4A)

    The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.

        
    14
    2019-03-04 04:45:10Z
    1. 使用Termux你可以安装python 2以及$apt install python2
      2017-07-16 01:53:55Z
    2. 醇>

    您可以使用 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一>

        
    12
    2016-09-16 02:41:18Z

    没有看到这个发布在这里,但你现在可以用Pyside和Qt来做到这一点,因为在Necessitas上Qt适用于Android。

    目前这似乎是一个很好的克服,但最终可能是一条可行的路线......

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

        
    10
    2014-10-06 14:59:14Z

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

    Python3-Android 3.4.2 Python3-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位

        
    10
    2016-07-11 13:10:3​​4Z

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

      

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

    根据通过pyqtdeploy和Qt5将PyQt5应用程序部署到Android 它是积极开发的,虽然很难找到工作Android应用程序的示例或如何将所有必需的库交叉编译到Android的教程。这是一个值得关注的有趣项目!

        
    8
    2017-05-23 12:18:36Z

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

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

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

        
    4
    2018-08-20 16:59:32Z

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

        
    3
    2018-01-12 18:56:16Z
来源放置 这里