我们正在开发S60版本,这个平台有一个很好的Python API ..
但是,在Android上没有关于Python的正式官方,但是由于Jython存在,有没有办法让蛇和机器人一起工作?
一种方法是使用Kivy:
开源Python库,用于快速开发利用创新用户界面的应用程序,例如多点触控应用程序.
Kivy可以在Linux,Windows,OS X,Android和iOS上运行.您可以在所有支持的平台上运行相同的[python]代码.
Kivy Showcase应用程序
还有新的Android脚本环境(ASE/SL4A)项目.它看起来很棒,并且与原生Android组件有一些集成.
注意:不再在"积极开发"下,但有些叉子可能会.
是! :Android脚本环境
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)
还有谷歌员工写的SL4A.
" Android的Pygame子集是Android平台的Pygame功能子集的一个端口.该项目的目标是允许创建特定于Android的游戏,并简化从类似PC的平台到Android的游戏移植".
这些例子包括一个包装在APK中的完整游戏,非常有趣.
我已经发布了针对Android交叉编译Python 2.7.2的说明和补丁,你可以在我的博客上找到它:http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android /
编辑:我是开源的Ignifuga,我的2D游戏引擎,它基于Python/SDL,它可以交叉编译Android.即使你没有将它用于游戏,你也可以从代码和构建器实用程序中获得有用的想法(在Tim之后命名为Schafer ......你知道是谁).
SL4A做你想要的.您可以从他们的站点直接将其直接安装到您的设备上,而不需要root.
它支持多种语言.Python是最成熟的.默认情况下,它使用Python 2.6,但您可以使用3.2端口.我已经在Galaxy S2上使用了那个端口来处理各种各样的事情并且工作正常.
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进程之间来回传递消息.用户界面不是原生的,但它仍然是一个很好的选择.
对原生Android用户界面有一些支持,但我不确定它有多好用; 我只是没用过它.
您可以混合选项,这样您就可以拥有主界面的webview,并仍然使用本机对话.
有一个名为QPython的第三方项目.它建立在SL4A之上,并引入了一些其他有用的东西.
QPython为您提供了更好的UI来管理您的安装,并包含一个小的触摸屏代码编辑器,一个Python shell和一个用于包管理的PIP shell.他们还有一个Python 3端口.这两个版本都可以从Play商店免费获得.QPython还捆绑了Android项目中的一堆Python库,包括Kivy,所以它不仅仅是SL4A.
请注意,QPython仍在开发他们的SL4A分支(不过,说实话并不多).主要的SL4A项目本身已经死了.
SL4A项目(现在在GitHub上):https://github.com/damonkohler/sl4a
SL4A Python 3端口:https://code.google.com/p/python-for-android/wiki/Python3
QPython项目:http://qpython.com
作为Python爱好者和Android程序员,我很遗憾地说这不是一个好方法.有两个问题.
一个问题是Android开发工具不仅仅是一种编程语言.很多Android图形都涉及配置显示的XML文件,类似于HTML.内置的java对象实际上与这个XML布局集成在一起,并且比编写自己的代码从逻辑到位图要容易得多.
另一个问题是G1(以及可能在不久的将来可能还有其他Android设备)真的不那么快.200 MHz处理器和RAM非常有限.即使在Java中,如果你想让你的应用程序非常流畅,你也必须做大量的重写 - 避免更多的对象创建.Python仍然会在移动设备上停留太长时间.
我想发布这个作为@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的另一大卖点,前提是您可以使用相同的代码库,只需通过kivy-ios Homebrew工具在iOS设备上进行测试运行所需的更改,尽管在运行之前需要Xcode进行构建他们的设备(XFA中的iOS模拟器AFAIK目前不适用于x86架构).还有一些依赖性问题必须在Xcode中手动编译和摆弄才能成功构建,但它们不会太难解决,Kivy Google Group中的人员也非常有帮助.
总而言之,拥有良好Python知识的用户在几周(如果不是几天)构建一些简单的应用程序时应该没有问题.
另外值得一提的是,您可以使用构建捆绑(构建配方)您的Python模块,这样用户就可以通过Kivy的扩展支持真正利用Python带来的许多现有库,如Requests和PIL等.
有时,您的应用程序需要的功能超出了Kivy所能提供的范围.在这些情况下,有必要使用外部软件库.鉴于Python生态系统的丰富性,已经有很多软件库可以立即导入和使用.
最后但并非最不重要的是,如果您打算将Kivy用于更严肃/商业项目,您可能会发现现有模块并不令人满意.虽然有一些可行的解决方案,pyjnius for Android 的"正在进行中" 和pyobjus.用户现在可以通过这些模块访问Java/Objective-C类来控制一些本机API.
我在Kivy的经验是,它会发现它最适合经验丰富的Python程序员和一些想要快速开发或简单代码库维护的认真程序员.它在多个平台上运行良好,虽然不是真正的本土感觉.
我希望一些Python应用程序程序员发现这些信息很有用,并开始看看Kivy.如果社区有很大的兴趣,它只能变得更好(有更多的支持和库/模块被移植).
PS我与Kivy没有任何关系,我只是一个真正喜欢将Python编码带入移动/跨平台开发的想法的程序员.
不是现在,你很幸运能让Jython尽快上班.如果您现在计划开始开发,那么现在只需坚持使用Java就可以了.
使用SL4A(已经在其他答案中已经提到过),你可以运行一个成熟的web2py实例(其他python web框架也可能是候选者).SL4A不允许您使用本机UI组件(按钮,滚动条等),但它确实支持WebView.WebView基本上只是指向固定地址的条带化Web浏览器.我相信原生Gmail应用使用WebView而不是常规小部件路径.
这条路线有一些有趣的特点:
在大多数python web框架的情况下,你可以实际开发和测试,而无需使用Android设备或Android模拟器.
无论您最终为手机编写什么Python代码,也可以将其放在公共网络服务器上,只需很少(如果有)修改.
你可以利用所有疯狂的网页内容:查询,HTML5,CSS3等.
您可以使用Termux应用程序:
注意apt安装python install python 3.对于python 2你应该调用apt install python2.
这里有一些演示:https://www.youtube.com/watch?v = fqqsl72mASE
还有github页面:https://github.com/termux
我使用QPython应用程序.它有一个编辑器,一个控制台,你可以用它运行你的Python程序.该应用程序是免费的,链接是http://qpython.com/.
从Python for android站点:
Python for android是一个创建自己的Python发行版的项目,包括你想要的模块,并创建一个包含python,libs和你的应用程序的apk.
又一次尝试:https://code.google.com/p/android-python27/
这个直接嵌入你的应用程序apk中的Python解释器.
Chaquopy是Android Studio基于Gradle的构建系统的插件.它侧重于与标准Android开发工具的紧密集成.
它提供了完整的API,可以从Python调用Java或从Java调用Python,允许开发人员使用最适合其应用程序的每个组件的语言.
它可以自动下载PyPI包并将它们构建到应用程序中,包括选定的本机包,如NumPy.
它支持从Python完全访问所有Android API,包括本机用户界面工具包(示例纯Python活动).
这是一个商业产品,但它可以免费用于开源使用,并且将始终保持这种状态.
(我是这个产品的创造者.)
playstore中有一个名为QPython3的应用程序,可用于编辑和运行python脚本.
Playstore链接
另一个名为Termux的应用程序,您可以在其中使用命令安装python
pkg install python
Playstore Link
还有可能正在运行mosync的python-on-a-chip:google group
您可以使用sl4a运行Python代码.sl4a支持Python,Perl,JRuby,Lua,BeanShell,JavaScript,Tcl和shell脚本.
您可以学习sl4a Python示例.
你可以使用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
没有看到这个发布在这里,但你可以用Pyside和Qt做到现在Qt可以在Android上运行,感谢Necessitas.
目前看来这只是一个很好的克服,但最终可能是一条可行的路线......
http://qt-project.org/wiki/PySide_for_Android_guide
如果您正在寻找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位
另一个选项似乎是pyqtdeploy,引用文档是:
与Qt一起提供的其他工具一起使用的工具,可以部署使用Python v2.7或Python v3.3或更高版本编写的PyQt4和PyQt5应用程序.它支持部署到桌面平台(Linux,Windows和OS X)和移动平台(iOS和Android).
根据通过pyqtdeploy和Qt5将PyQt5应用程序部署到Android,它是积极开发的,虽然很难找到工作Android应用程序的示例或如何将所有必需的库交叉编译到Android的教程.尽管如此,这是一个有趣的项目!
看一下BeeWare。在回答这个问题时,它仍处于早期开发中。目的是能够使用Python为所有受支持的操作系统(包括Android)创建本机应用程序。
看看enaml-native,它采用了react-native概念并将其应用于python。
它允许用户使用本机Android小部件来构建应用,并提供API以使用来自python的android和java库。
它还与android-studio集成,并共享了react的一些不错的开发功能,例如代码重载和远程调试。