社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何Python写一个安卓APP

python • 7 年前 • 435 次点击  

前言:Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择

我们使用kivy开发安卓APPKivy是一套专门用于跨平台快速应用开发的开源框架,使用PythonCython编写,对于多点触控有着非常良好的支持,不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署,绝对是一款颇让人惊艳的NUI框架。

因为跨平台的,所以只写一遍代码,就可以同时生成安卓及IOSAPP,很酷吧。

kivy安装

环境说明:笔者在用的是Python2.7.10

这里仅介绍windows平台安装

所有平台参考: https://kivy.org/#download

更新pip,setuptools

1
python -m pip install --upgrade pip wheel setuptools

然后是安装所需要的依赖

1
2
python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \
kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/

值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,http://pan.baidu.com/s/1o7mlxNk

然后就是安装kivy

1
python -m pip install kivy

 

至此,安装就已经完毕了,值得注意的是64位系统没有开启虚拟化支持,在导入kivy的时候会报错,如果是64位系统就设置一下机器的BIOS,开启虚拟化支持吧。

注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。


如果kivypython中应该就能导入了。

按照“世界惯例”咱们来“hello”一下吧

新建一个py文件

1
2
3
4
5
6
7
8
from kivy.app import App
from kivy.uix.button importButton
  
class TestApp(App):
    def build(self):
        return Button(text='Hello,kivy')
  
TestApp().run()

然后会弹出一个框,大概如下,点击”hello,kivy”会变颜色

点击窗口并按“F1”会这个窗口的一些属性

然后我们回过头看一看代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
##导入App,然后让TestApp这个类继承
from kivy.app import App
##导入一个Button,运维有这个button,当你点击的时候才会有所反应
from kivy.uix.button importButton
  
###定义类,名字必须是xxxApp
class TestApp(App):
    ###build一个Button
    def build(self):
        ###返回一个Button,文字内容是“Hello,kivy”
        return Button(text='Hello,kivy')
  
##运行,因为继承了App,所以才有的run这个方法
TestApp().run()


windows上运行当然没有什么太大的意义,怎么在安卓手机上运行才是我们想要的,这时我们需要一个编译环境。

官方说明的环境,如下:


You’ll need:

  • A     linux computer or a virtual machine

  • Java

  • Python     2.7 (not 2.6.)

  • Jinja2     (python module)

  • Apache     ant

  • Android     SDK

虽然官方提供了一个似乎还不错的虚拟机镜像,但是还是有很多内容需要翻出去,所以笔者在这里提供相对而言更加完善的镜像

下载地址:http://pan.baidu.com/s/1geyAY7x


:virtualboxvmware需自行下载

root密码:kivy

默认使用账户kivy,密码:kivy123

 

当然你也可以下载官方镜像,因为第一次编译需要去国外下一大堆东西,所以请自备梯子。


在笔者提供的镜像里,桌面上有一个dev_and,只要将上面写的代码,放入这个文件夹即可(当然也可以在其他目录,后面会讲到)

1
cd Desktop/dev_and/

##初始化会在当前目录生成一个buildozer.spec文件 用于配置生成的apk相关信息

1
buildozer init

###修改buildozer.spec文件

1
vi buildozer.spec

至少修改下面三项

1
2
3
4
5
6
7
8
# (str) Title of your application
title = helloworld
  
# (str) Package name
package.name = helloapp
  
# (str) Package domain (needed for android/ios packaging)
package.domain = youer.com

然后注释

1
2
3
# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py
1
2
下面这行改为非注释
version = 1.2.0

 最后我们生成我们需要的apk文件

1
buildozer -v android debug

buildozer命令会在当前文件夹创建一个bin,该文件夹里面有我们想要的apk文件

1
helloapp-1.2.0-debug.apk

效果图


主要由三部分组成,一是素材,图片音频之类的文件,二是Python代码,三是kv文件,这个kv文件有点像html中的css。


Python代码的文件名一般命名为main.py

然后一定有一个叫做XXXApp的类,并继承App。


比如该类叫做GameApp,那么该目录下的kv文件则必须为Game,如上图所示,如果不是,那么kv文件中的一些设定就不会生效。

比如设定一个标签

1
2
3
4
Label:
        idtime
        text: 'xxxx'
        font_size: 60

id为time,text文本内容为'xxxx',然后字体为60

End

作者:youerning

源自:http://blog.51cto.com/youerning/1733534

声明:文章著作权归作者所有,如有侵权,请联系小编删除

源码:https://github.com/mvasilkov


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/vKsvvHUESg
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/7490
 
435 次点击