一种方法是使用Kivy:
Kivy是一个开源Python库,用于快速开发应用程序,利用创新的用户界面,例如多点触控应用程序。
Kivy可以在Linux、Windows、OS X、Android和iOS上运行。您可以在所有支持的平台上运行相同的[python]代码。
还有新的Android Scripting Environment (ASE/SL4A) 项目。它看起来非常棒,并且与原生的Android组件有一些集成。
注意:该项目不再处于“积极开发”状态,但可能存在一些分支。
是的! : Android Scripting Environment
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)
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']))
该代码使用Python编写,通过Android模块调用Android系统的API。在扫描条形码后,会打开一个浏览器窗口,并搜索扫描结果所代表的书籍。 - Alex LPygame是一个针对Python(在桌面上)的2D游戏引擎,受到新手程序员的欢迎。 Pygame适用于Android的子集 自述其为...
...将Pygame功能的子集移植到Android平台上。该项目的目标是允许创建特定于Android的游戏,并简化从类似PC的平台移植游戏的过程。
示例包括一个打包为APK的完整游戏,非常有趣。
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。你甚至可以在webview中使用JavaScript API。
let droid = new Android();
droid.ttsSpeak("hello from js");
对于用户界面,您有三个选择:
您可以混合选项,因此可以在主界面中使用Web视图,并仍然使用本地对话框。
有一个名为QPython的第三方项目。它建立在SL4A之上,同时加入了一些其他有用的东西。
QPython为您提供更好的UI以管理您的安装,并包括一个小型触摸屏代码编辑器、一个Python shell和一个PIP shell用于软件包管理。他们也有一个Python 3端口。两个版本都可以免费从Play Store下载。QPython还捆绑了许多Python on Android项目的库,包括Kivy,因此它不仅仅是SL4A。
请注意,QPython仍在开发他们的SL4A分支(不过,说实话没有太多)。主要的SL4A项目本身已经几乎死亡了。
我的博客提供了 关于如何交叉编译Python 2.7.2到Android的说明和补丁。
我还开源了Ignifuga,这是一个基于Python/SDL的2D游戏引擎,可以进行Android上的交叉编译。即使您不用它来制作游戏,也可能从代码或构建工具 (命名为Schafer,以Tim...你知道的那个人命名) 中获得有用的想法。
我想补充一下@JohnMudd所写的关于Kivy的内容。他描述的情况已经过去多年,Kivy已经有了很大的发展。
Kivy最大的卖点,在我看来,是其跨平台兼容性。你可以使用任何桌面环境(Windows/*nix等)编写和测试所有代码,然后将应用程序包装成为包括Android、iOS、MacOS和Windows在内的多个不同平台的应用程序(虽然应用可能缺乏本机的外观和感觉)。
通过Kivy自己的KV语言,您可以轻松地编写和构建GUI界面(就像Java XML一样,但是KV有自己的ui.widgets
进行类似的翻译),在我看来非常容易掌握。
目前,Buildozer和python-for-android是构建和打包应用程序的最推荐工具。我已经尝试过它们两者,并且可以坚定地说,它们使使用Python构建Android应用程序变得轻松。他们的指南也都有很好的文档。
iOS是Kivy的另一个重要卖点。您可以通过kivy-ios Homebrew工具使用相同的代码库,只需要进行少量更改,然后在设备上运行(据我所知,Xcode需要进行构建,但iOS模拟器目前无法用于x86架构构建)。还有一些依赖性问题必须在Xcode中手动编译和调整,以实现成功构建,但它们不会太难解决,而且在Kivy Google Group中的人们也非常乐于助人。
总之,具有良好Python知识的用户应该没有问题能够快速掌握基础知识。
如果你正在使用Kivy进行更为严肃的项目开发,你可能会发现现有的模块不尽如人意。但是,也有一些可行的解决方案。通过(正在进行中的)pyjnius,用户可以访问Java/Objective-C类来控制一些本地API;通过pyobjus,用户也可以实现这一功能。