TestApp().run()运行代码后,会弹出一个窗口,点击“Hello, Kivy”会变颜色。点击窗口并按“F1”会显示窗口的一些属性。接下来我们回到代码。导入App,然后让TestApp这个类继承:from kivy.app import App 导入一个Button:from kivy.uix.button import Button 定义类,名字必须是xxxApp:class TestApp...
怎么用python编android app
用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 setuptools
2. 安装所需依赖:
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 App
from kivy.uix.button import Button
class 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. Java
3. Python 2.7 (不是2.6)
4. Jinja2 (Python模块)
5. Apache ant
6. Android SDK
虽然官方提供了一个虚拟机镜像,但还是有很多内容需要翻墙。笔者在这里提供一个更加完善的镜像。
在笔者提供的镜像里,桌面上有一个dev_and。只要将上面的代码放入这个文件夹即可(当然也可以在其他目录,后面会讲到)。
cd Desktop/dev_and/
初始化会在当前目录生成一个buildozer.spec文件,用于配置生成的APK相关信息:
buildozer init
修改buildozer.spec文件:
vi buildozer.spec
至少修改下面三项:
# (str) Title of your application
title = helloworld
# (str) Package name
package.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 debug
buildozer命令会在当前文件夹创建一个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: 60
id为time,text文本内容为’xxxx‘,字体为60。
从无到有做一个App,我想我会另起一篇文章吧。2024-12-11