由于Google的Android Scripting项目SL4A,开发者可以使用脚本语言来开发Android应用,比如Python、Perl、JRuby、Lua、shell等,都可在Android上执行。不过使用它并不能帮助创建一个易安装、自包含可执行二进制文件的Python应用。因此,一个新的旨在让在Android系统上发布Python更加容易的项目——Python for Android推出了。
Python for Android是由Kivy团队开发的一个项目(Kivy是一个可用以快速创建新颖用户界面应用的开源Python库),该项目旨在帮助你创建自己的可以包含任何你想要模块的Python distribution应用,并帮助你将Python应用打包为可在Android设备运行的APK文件。打包工作可通过四步来完成:
- 下载Android SDK/NDK并确认已正确安装。
- 设置好环境。
- 创建一个包含模块的Python发行版本(Distribution)。一个Distribution由Python库、一些内置的模块(kivy、pygame、pil等)、一个Java bootstrap以及一个build script组成。
- 使用该发行版本创建一个Python应用的APK文件。
详细内容可以参见这篇文章介绍:
http://txzone.net/2012/01/introducing-python-for-android/
为了对比,我们可以查看下Python for Android与其他项目的比较:
Project | Native Python | GUI libraries | APK generation | Custom build |
Python for android | Yes | Yes | Yes | Yes |
PGS4A | Yes | Yes | Yes | No |
Android scripting | No | No | No | No |
Python on a chip | No | No | No | No |
目前,该工具只有一个用于支持Kivy模块的Java bootstrap,开发人员鼓励其他开发者创建出更多的bootstrap。其现在可用的模块包括:peg、pil、png、sdl、sqlite3、pygame、kivy、android、libxml2、libxslt、lxml、ffmpeg、openssl等。
Python for Android以LGPLv2许可证开源,代码托管与Github上。
##################################################################################################################
近日在Ubuntu上安装了Python开源框架kivy,可以开发跨平台的应用,当然包括Android.
下面是Hello world代码:
import kivy
kivy.require('1.6.1-dev')
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.properties import NumericProperty
from kivy.app import App
Builder.load_string('''
<HelloWorldScreen>:
cols: 1
Label:
text: 'Welcome to the Hello world'
Button:
text: 'Click me! %d' % root.counter
on_release: root.my_callback()
''')
class HelloWorldScreen(GridLayout):
counter = NumericProperty(0)
def my_callback(self):
print 'The button have been pushed'
self.counter += 1
class HelloWorldApp(App):
def build(self):
return HelloWorldScreen()
if __name__ == '__main__':
HelloWorldApp().run()
kivy设置界面:
####################################################################################################
那么Python+Kivy的优势是什么呢?
1、简单,只需要下载一个13M的.apk软件安装的Android手机或平板上,然后再有一个支持Python代码着色的代码编辑器就可以了!!
2、快速,Python程序是解释执行的,也就是说把代码保存到.py后缀的文本文件中就可以直接运行,如果效果不满意直接用文本编辑器打开程序文件,修改几个语句就可以立即尝试新程序版本;甚至你可以在手机上直接安装一个代码编辑器来随时随地修改,然后立即运行查看效果。
3、通用,Python本身是一种非常易学易用的跨平台的通用编程语言,在Windows、Linux、MacOS、Android、iPhone上都可以运行,而界面库也可以运行在前面说的所有平台上;如果哪天感觉Kivy界面库不够用了,直接把Kivy换成PyQT界面库就可以进行基于界面库的开发了,而QT也是跨平台的(现在支持Android的PyQT还没发行,但据说快了)。
说了这么多,那到底怎样开始Python+Kivy的Android程序开放呢??
非常简单,到http://kivy.org/#download网站去下载安装到手机上就可以了,就这么简单。然后你可以在http://kivy.org/下载一些例子放到手机的sdcard/kivy目录下,然后运行一下感受一下。
之前我说过可以直接在手机上安装一个文本编辑器来编写或修改基于Python+kivy的Android程序,touchqode就是android上最好的文本编辑器了,我也一并传上来:
但是,在手机上偶尔改几行代码还行,要是真的在手机上写代码,那恐怕会把人累的吐血的。所以,你可以在电脑上也安装Python+kivy,然后在电脑上写好了程序之后拷贝到手机上运行。
还有一种方法,不需要在电脑上安装Python+Kivy,编码更加直接,那就是远程桌面,也就是说:在手机上安装VNC Server并启动,然后在电脑上安装VNC Client连接到手机上的VNC Server,这样就可以直接通过电脑的屏幕、鼠标、键盘来控制手机了,看一下效果图:
可以看到手机的内容直接显示在了电脑的软件上,而且可以通过电脑的鼠标、键盘来控制手机。
实现这个功能需要两个软件,我把软件传上来,大家只要把软件安装上,至于使用非常简单,就是先启动手机上的软件并启动服务,然后启动电脑上的软件,输入IP和端口号,连接就可以了:
手机上的软件:
电脑上的软件:
大家可以看到,这种方法开发Android应用比使用JAVA的方法要简单的多;当然,缺点就是Python+Kivy并不是Android官方支持的,肯定功能上不如JAVA开发,但是对于我们这些业余选手来说,也没有必要开发出多么复杂的程序,所以找一个简单、快速的方法更有意义。。。
当然,我也是今天才刚刚发现这个方法的,虽然对Python的能力深信不疑,但Kivy到底能做到什么程度我也不清楚,不过也不用担心,正如我所说:功能更加强大的PyQT界面库很快就会有Android甚至Iphone版本了,到时候如果Kivy不给力就换到PYQT上去也是非常EASY的事情!!!