用Python开发安卓应用程序可能不是最佳选择,但它确实是一个懒人之选。如果你觉得学习Java太麻烦,且Python和Golang的水平都一般,不妨试试Python编写安卓应用。通过搜索,发现Python确实能够用来编写安卓应用。既然要做个应用,那就需要一个想法。笔者有两个想法,一个是自己玩的,另一个是关于运维的。关于运维的应用,设计如下:界面可能长这样:设计应该包括:如果觉得可行,请在评论中提出你认为应该加入的应用运维常用命令,笔者目前想到的有:top, free -m, df –h, uptime, iftop, iotop。如果有更好的想法,请尽情提出,笔者会将其上传至GitHub,大家一起使用,开源才是王道。我们使用Kivy开发安卓应用,Kivy是一个用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对多点触控有良好支持。它不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署。Kivy绝对是一款让人惊艳的NUI框架。由于跨平台,只需编写一遍代码即可同时生成安卓和iOS应用。接下来,我们编写一个简单的Hello World应用。安装环境说明:笔者使用的是Python 2.7.10。以下是安装步骤:1. 更新pip和setuptools:python -m pip install --upgrade pip wheel setuptools2. 安装所需依赖:python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew \ kivy.deps.gstreamer --extra-index-url注意:上面的安卓需要访问Google,所以请自备梯子。kivy.deps.gstreamer这个包较大(95MB),可以单独本地安装。3. 安装Kivy:python -m pip install kivy注意:64位系统没有开启虚拟化支持,在导入Kivy时会报错。如果是64位系统,请设置机器的BIOS,开启虚拟化支持。安装完成后,Kivy应该可以在Python中导入。按照惯例,我们先来个”hello”。新建一个.py文件:from kivy.app import Appfrom kivy.uix.button import Buttonclass TestApp(App):def build(self):return Button(text='Hello, Kivy')TestApp().run()运行代码后,会弹出一个窗口,点击“Hello, Kivy”会变颜色。点击窗口并按“F1”会显示窗口的一些属性。接下来我们回到代码。导入App,然后让TestApp这个类继承:from kivy.app import App导入一个Button:from kivy.uix.button import Button定义类,名字必须是xxxApp:class TestApp(App):构建一个Button:def build(self):返回一个Button,文字内容是“Hello, Kivy”:return Button(text='Hello, Kivy')运行,因为继承了App,所以才有run这个方法:TestApp().run()在Windows上运行这个应用并没有太大意义,如何在安卓手机上运行才是我们的目标。这时我们需要一个编译环境。官方说明的环境如下:1. Linux计算机或虚拟机2. Java3. Python 2.7 (不是2.6)4. Jinja2 (Python模块)5. Apache ant6. Android SDK虽然官方提供了一个虚拟机镜像,但还是有很多内容需要翻墙。笔者在这里提供一个更加完善的镜像。在笔者提供的镜像里,桌面上有一个dev_and。只要将上面的代码放入这个文件夹即可(当然也可以在其他目录,后面会讲到)。cd Desktop/dev_and/初始化会在当前目录生成一个buildozer.spec文件,用于配置生成的APK相关信息:buildozer init修改buildozer.spec文件:vi buildozer.spec至少修改下面三项:# (str) Title of your applicationtitle = helloworld# (str) Package namepackage.name = helloapp# (str) Package domain (needed for android/ios packaging)package.domain = your.com然后注释掉:# (str) Application versioning (method 1)#version.regex = __version__ = ['"](.*)['"]#version.filename = %(source.dir)s/main.py将下面这行改为非注释:version = 1.2.0最后生成我们需要的APK文件:buildozer -v android debugbuildozer命令会在当前文件夹创建一个bin文件夹,该文件夹里面有我们想要的APK文件:helloapp-1.2.0-debug.apk安装后应该是这样的:编译时可能会出现空间不足的情况,根据虚拟机的不同(vmware或virtualbox)自行扩容。最后我们来瞧瞧简易版Python开发的2048这个游戏的源代码。先看效果图:试玩了一下,还是蛮流畅的,有兴趣的可以下载玩一下。这个游戏代码虽然不长,但还是蛮占篇幅的,所以简要说明一下流程:主要由三部分组成:1. 素材,图片音频之类的文件2. Python代码3. kv文件,有点像HTML中的CSS。Python代码的文件名一般命名为main.py。然后一定有一个叫做XXXApp的类,并继承App。比如该类叫做GameApp,那么该目录下的kv文件则必须为Game,如上图所示,如果不是,那么kv文件中的设定就不会生效。比如设定一个标签:Label: id: time text: 'xxxx' font_size: 60id为time,text文本内容为’xxxx‘,字体为60。从无到有做一个App,我想我会另起一篇文章吧。