答案 0 :(得分:953)
一种方法是使用Kivy:
开源Python库,用于快速开发应用程序 利用创新的用户界面,如多点触控应用程序。
Kivy在Linux,Windows,OS X,Android和iOS上运行。您可以在所有支持的平台上运行相同的[python]代码。
答案 1 :(得分:330)
还有新的Android Scripting Environment(ASE / SL4A)项目。它看起来很棒,并且与原生Android组件有一些集成。
注意:不再处于“主动开发”状态,但可能会有一些分叉。
答案 2 :(得分:199)
是的! :Android Scripting Environment
通过SL4A的示例via 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)
答案 3 :(得分:83)
Google员工也大量写了SL4A。
答案 4 :(得分:82)
“Pygame Subset for Android是Android平台Pygame功能子集的一个端口。该项目的目标是允许创建特定于Android的游戏,并简化游戏的移植从类似PC的平台到Android。“
这些例子包括一个打包在APK中的完整游戏,非常有趣。
答案 5 :(得分:72)
我发布了针对Android交叉编译Python 2.7.2的说明和补丁,您可以在我的博客上获取它:http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/
编辑:我已经开源Ignifuga,我的2D游戏引擎,基于Python / SDL,它可以交叉编译Android。即使你没有将它用于游戏,你也可以从代码和构建器实用程序中获得有用的想法(在Tim之后命名为Schafer ......你知道是谁)。答案 6 :(得分:70)
SL4A做你想要的。您可以从他们的站点直接将其直接安装到您的设备上,而不需要root。
它支持多种语言。 Python是最成熟的。默认情况下,它使用Python 2.6,但您可以使用3.2 port。我已经将这个端口用于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。您甚至可以在网络视图中使用JavaScript API。
let droid = new Android();
droid.ttsSpeak("hello from js");
对于用户界面,您有三个选项:
您可以混合选项,这样您就可以拥有主界面的webview,并仍然使用原生对话。
有一个名为QPython的第三方项目。它建立在SL4A之上,并引入了一些其他有用的东西。
QPython为您提供了更好的UI来管理您的安装,并包含一个小的触摸屏代码编辑器,一个Python shell和一个用于包管理的PIP shell。他们还有一个Python 3端口。这两个版本都可以从Play商店免费获得。 QPython还捆绑了Android项目中的一堆Python库,包括Kivy,所以它不仅仅是SL4A。
请注意,QPython仍在开发他们的SL4A分支(不过,说实话并不多)。主要的SL4A项目本身已经死了。
答案 7 :(得分:63)
作为Python情人和Android程序员,我痛心地说,这是不是真的走的好方法。有两个问题。
一个问题是Android开发工具不仅仅是一种编程语言。很多Android图形都涉及配置显示的XML文件,类似于HTML。内置的java对象实际上与这个XML布局集成在一起,并且比编写自己的代码从逻辑到位图要容易得多。
另一个问题是G1(以及可能在不久的将来的其他Android设备)真的不那么快。 200 MHz处理器和RAM非常有限。即使在Java中,如果你想让你的应用程序非常流畅,你也必须做大量的重写 - 避免更多的对象创建。在移动设备上,Python一段时间太慢了。
答案 8 :(得分:38)
我想发布此内容作为 @JohnMudd 已经回答的内容的延伸(但请耐心等待我,因为英语不是我的第一语言)< / p>
从那以后已经有好几年了,Kivy已经发展到v1.9-dev。在我看来,Kivy的最大卖点是它的跨平台兼容性。您可以在本地环境(Windows / * nix等)下进行编码和测试,也可以构建,调试和打包您的应用程序,以便在Android / iOS / Mac / Windows设备上运行。
使用Kivy自己的KV语言,您可以轻松编写和构建GUI界面(它就像Java XML,而不是TextView等,KV有自己的{{ 1}}对于类似的翻译),这在我看来很容易采用。
目前,Buildozer和python-for-android是最适合构建/打包应用的工具。我已经尝试过它们并且可以坚定地说它们使用Python构建Android应用程序变得轻而易举。在控制台/终端/命令提示符下感到舒服的用户在使用它们时应该没有问题,并且他们的指南也有很好的文档记录。
此外,iOS是Kivy的另一大卖点,前提是您可以使用相同的代码库,只需通过kivy-ios Homebrew工具在iOS设备上进行测试运行所需的更改,尽管Xcode是必需的在他们的设备上运行之前的构建(AFAIK Xcode中的iOS模拟器目前不适用于x86架构构建)。还有一些依赖性问题必须在Xcode中手动编译和摆弄才能成功构建,但它们不会太难解决,Kivy Google Group中的人也非常有用。
总而言之,拥有良好Python知识的用户应该在几周(如果不是几天)内完成基础知识来构建一些简单的应用程序。
另外值得一提的是,您可以使用构建捆绑(构建配方)Python模块,这样用户就可以真正利用Python带来的许多现有库,例如Requests&amp; PIL等通过Kivy's extension support。
有时您的应用程序需要的功能超出了 Kivy可以提供的范围。在那些情况下,有必要 求助于外部软件库。鉴于丰富的 Python生态系统,已经有很多软件 您可以立即导入和使用的库。
最后但并非最不重要的是,如果您打算将Kivy用于更严肃/商业项目,您可能会发现现有模块并不令人满意。虽然有一些可行的解决方案,但正在进行中的工作&#34;适用于Android的pyjnius和pyobjus。用户现在可以通过这些模块访问Java / Objective-C类来控制一些本机API。
我在Kivy的经验是,它会发现它最适合经验丰富的Python程序员和一些想要快速开发或简单代码库维护的认真程序员。它在多个平台上运行良好,虽然不是真正的原生感觉。
我希望一些Python应用程序程序员发现这些信息很有用,然后开始看看Kivy。如果社区有很大的兴趣,它只能变得更好(有更多的支持和库/模块移植)。
P.S。我与Kivy没有任何关系,我只是一个真正喜欢将Python编码带入移动/跨平台开发的想法的程序员。
答案 9 :(得分:36)
目前还没有,你很幸运能让Jython尽快上班。如果您现在计划开始开发,那么现在只需坚持使用Java就可以了。
答案 10 :(得分:35)
使用SL4A(已在其他答案中单独提及),run一个成熟的web2py实例(其他python web frameworks也可能是候选者)。 SL4A不允许您使用本机UI组件(按钮,滚动条等),但它支持WebViews。 WebView基本上只是指向固定地址的条带化Web浏览器。我相信原生Gmail应用使用WebView而不是常规小部件路径。
这条路线会有一些有趣的功能:
答案 11 :(得分:25)
我使用QPython应用程序。它有一个编辑器,一个控制台,你可以用它运行你的Python程序。该应用程序是免费的,链接为http://qpython.com/。
答案 12 :(得分:22)
您可以使用this one申请:
注意apt安装python install python 3。 对于python 2,你应该调用apt install python2。
这里有一些演示:Termux
还有github页面:https://www.youtube.com/watch?v=fqqsl72mASE
答案 13 :(得分:22)
来自Python for android网站:
Python for android是一个创建自己的Python发行版的项目,包括你想要的模块,并创建一个包含python,libs和你的应用程序的apk。
答案 14 :(得分:17)
又一次尝试:https://code.google.com/p/android-python27/
这个直接在您的应用apk中嵌入Python解释器。
答案 15 :(得分:13)
您可以使用sl4a运行Python代码。 sl4a支持Python,Perl,JRuby,Lua,BeanShell,JavaScript,Tcl和shell脚本。
您可以学习sl4a Python Examples。
答案 16 :(得分:13)
还有可能正在运行mosync的python-on-a-chip:google group
答案 17 :(得分:13)
Chaquopy是Android Studio基于Gradle的构建系统的插件。它侧重于close integration与标准的Android开发工具。
它提供了完整的API来呼叫Java from Python或Python from Java,允许开发人员使用最适合其应用的每个组件的语言。
它可以自动下载PyPI packages并将其构建到应用程序中,包括选定的本机程序包,如NumPy。
它支持从Python完全访问所有Android API,包括本机用户界面工具包(example pure-Python activity)。
这是一种商业产品,但它可以免费用于开源使用,并且始终保持这种状态。
(我是这个产品的创造者。)
答案 18 :(得分:11)
您可以使用 QPython :
它有一个Python控制台,编辑器,以及包管理/安装程序
它是一个包含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
答案 19 :(得分:11)
Playstore中有一个名为QPython3的应用程序,可用于编辑和运行python脚本。
另一个名为Termux的应用程序,您可以使用命令
安装pythonpkg install python
如果您想开发应用,则有Python Android Scripting Layer (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.
答案 20 :(得分:9)
没有看到这个发布在这里,但你现在可以用Pyside和Qt来做到这一点,因为在Necessitas上,Qt可以在Android上运行。
目前这似乎是一个很好的克服,但最终可能是一条可行的路线......
答案 21 :(得分:9)
如果您正在寻找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位
答案 22 :(得分:7)
另外一个选项似乎是pyqtdeploy,引用文档是:
一种工具,与Qt提供的其他工具一起启用 使用Python编写的PyQt4和PyQt5应用程序的部署 v2.7或Python v3.3或更高版本。它支持部署到桌面 平台(Linux,Windows和OS X)和移动平台(iOS和Linux) 机器人)。
根据Deploying PyQt5 application to Android via pyqtdeploy and Qt5,它是积极开发的,虽然很难找到工作Android应用程序的示例或如何将所有必需的库交叉编译到Android的教程。这是一个值得关注的有趣项目!
答案 23 :(得分:3)
看看BeeWare。在回答这个问题时,它仍处于早期发展阶段。它的目标是能够为所有支持的操作系统(包括Android)创建使用Python的本机应用程序。
答案 24 :(得分:3)
查看enaml-native,它采用react-native概念并将其应用于python。
它允许用户使用原生Android小部件构建应用程序,并提供API以使用python中的android和java库。
它还与android-studio集成,并分享了一些反应良好的开发功能,如代码重新加载和远程调试。