python开发安卓app教程(安卓版python开发工具)
怎么用python编android app
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,还真行。
既然要写个APP,那么总得要有个想法吧。?
其实笔者想做两个APP来着,一个是自己写着好玩的,一个是关于运维的。?
关于运维的APP,设计应该如下?
可能长这样:
然后设计应该是这样:
如果觉得可行的话,评论留言一下你觉得应该写进这个APP的运维常用命令吧^_^,笔者暂时想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什么好的想法就狠狠的砸过来吧,笔者到时应该也会把这个写成一个项目放到github上,大家一起用嘛,开源才是王道,哈哈。
好吧,进入正题。?
我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署,绝对是一款颇让人惊艳的NUI框架。?
因为跨平台的,所以只写一遍代码,就可以同时生成安卓及IOS的APP,很酷吧。?
本文会带大家写一个Hello world并瞧一瞧Python版的2048的代码
kivy安装?
环境说明:笔者在用的是Python2.7.10?
这里仅介绍windows平台安装?
更新pip,setuptools
python -m pip install --upgrade pip wheel setuptools12
然后是安装所需要的依赖
python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \
kivy.deps.gstreamer --extra-index-url?
值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,
然后就是安装kivy了
python -m pip install kivy12
至此,安装就已经完毕了,值得注意的是64位系统没有开启虚拟化支持,在导入kivy的时候会报错,如果是64位系统就设置一下机器的BIOS,开启虚拟化支持吧。?
注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。
如果kivy在python中应该就能导入了。
按照世界惯例,我们”hello”一下吧。?
新建一个.py文件
from kivy.app import App
from kivy.uix.button importButton
class TestApp(App):
def build(self):
return Button(text='Hello,kivy')
TestApp().run()123456789
运行:
然后会弹出一个框,大概如下,点击”hello,kivy”会变颜色
点击窗口并按“F1”会这个窗口的一些属性
然后我们回过头看一看代码。
##导入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()123456789101112131415
上面就是我们的Hello了?
在windows上运行当然没有什么太大的意义,怎么在安卓手机上运行才是我们想要的,?
这时我们需要一个编译环境。?
官方说明的环境,如下:
You’ll need:
A ? ? linux computer or a virtual machine
Java
Python ? ? 2.7 (not 2.6.)
Jinja2 ? ? (python module)
Apache ? ? ant
Android ? ? SDK12345678
虽然官方提供了一个似乎还不错的虚拟机镜像,但是还是有很多内容需要翻出去,所以笔者在这里提供相对而言更加完善的镜像?
当然你也可以下载官方镜像,因为第一次编译需要去国外下一大堆东西,所以请自备梯子。
Virtual Machine?
A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation:?
Kivy Buildozer VM?
Or select the Torrent
在笔者提供的镜像里,桌面上有一个dev_and,只要将上面写的代码,放入这个文件夹即可(当然也可以在其他目录,后面会讲到)。
cd Desktop/dev_and/12
初始化会在当前目录生成一个buildozer.spec文件 用于配置生成的apk相关信息
buildozer init12
修改buildozer.spec文件
vi buildozer.spec12
至少修改下面三项
# (str) Title of your application
title = helloworld
# (str) Package name
package.name = helloapp
# (str) Package domain (needed for android/ios packaging)
package.domain = youer.com123456789
然后注释
# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py
下面这行改为非注释
version = 1.2.0123456
最后我们生成我们需要的apk文件
buildozer -v android debug12
buildozer命令会在当前文件夹创建一个bin,该文件夹里面有我们想要的apk文件
helloapp-1.2.0-debug.apk
安装以后应该是这样
话说在编译的时候可能出现空间不足的情况,根据虚拟机的不同(vmware或virtualbox)自行扩容吧。
最后我们来瞧瞧简易版Python开发的2048这个游戏的源代码。?
先看效果图
试玩了一下,还是蛮流畅的,有兴趣的可以下载玩一下?
这个游戏代码虽然不长,但是还是蛮占篇幅的,所以简要的说明一下流程:
主要由三部分组成,一是素材,图片音频之类的文件,二是Python代码,三是kv文件,这个kv文件有点像html中的css。?
Python代码的文件名一般命名为main.py?
然后一定有一个叫做XXXApp的类,并继承App。?
比如该类叫做GameApp,那么该目录下的kv文件则必须为Game,如上图所示,如果不是,那么kv文件中的一些设定就不会生效。?
比如设定一个标签
Label:
id: time
text: 'xxxx'
font_size: 6012345
id为time,text文本内容为’xxxx’,然后字体为60?
好吧,点到为止吧,不过似乎什么都没点到~~~
从无到有做一个App,我想我会另起一篇文章吧。
如何Python写一个安卓APP
使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署,绝对是一款颇让人惊艳的NUI框架。
操作
更新pip,setuptools;
安装所需要的依赖;
注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。
如果kivy在python中应该就能导入了。
如何使用QPython开发Android应用
QPython入门
QPython WebApp应用框架能够让具有Web开发背景的开发者快速构建Android本地应用. 作为开发者,充分掌握你手中的利器,才能做到庖丁解牛,游刃有余地推动项目,接下来,你只需要30分钟,即可掌握QPython以及WebApp应用框架.
QPython的使用
QPython是我们项目的运行容器,我们所开发的项目需要运行在QPython之上(当然QPython也提供其他不同定位的程序开发支持,可以在以后的Codelab教程中逐一展示),因此你需要掌握以下使用技巧:
了解QPython的基本功能,能使用开始按钮以及开发者工具面板
你需要知道如何把项目上传或更新到QPython中
你需要掌握如何使用QPython运行项目
程序运行出错,如何查看错误信息,这个是作为开发者必备的技能
有些小的改动,比起上传或者更新整个项目而言,使用自带的QEdit方便第修改源代码可能会更简单
如果你想使用第三方库,你需要知道如何使用QPython来安装第三方库
更多详情可以参考如何使用QPython,以及如何使用QPython开发第一个HelloWorld
QPython的WebApp框架
为了让Web开发者能够快速上手Android应用开发,QPython推出了WebApp框架,它包括两个部分 - 基于Bottle框架的可定制本地Web服务器 - 构建于Android系统的WebView容器,
实现上述两个特性,就我们能够轻松地让QPython运行本地WebApp,避免传统服务端WebApp的网络传输瓶颈问题,获得更佳用户体验,此外,通过让Python能作为Backend语言,拥有更强大的包括网络,图像,运算等多种处理能力. 再加上强大的Python第三方库支撑,拥有Python/Web开发经验的人即可轻松开发体验良好的WebApp
更多详情可以参考QPython WebApp帮助
应用设计
掌握了QPython基础使用以及其WebApp框架后,我们可以开始针对我们的项目目标设计应用系统
应用的使用流程分析
输入:输入部分及为根据用户地理位置
输出:用户所在城市的PM2.5数值以及对应的防护措施建议
业务处理:通过地理位置坐标获得所在城市,通过请求PM2.5接口数据源获得PM2.5数值,再根据等级区分展示对应的防护措施建议
关键数据来源
地理位置信息:通过QPython的SL4A接口可轻易获得
根据地理位置查询所在城市
PM2.5数据来源:根据PM2.5API可以查询到所在城市的PM2.5数值情况
了解QPython的地理位置的SL4A接口,掌握PM2.5的数据来源接口,Google的根据地理坐标查询所在城市
应用的交互设计
主要为根据不同的PM2.5展示做不同的预警展示,并能满足用户查看详情的需求
技术实现方面我们选定使用Bootstrap作为前端框架:Bootstrap能根据设备的宽度的不同提供适配的界面框架.
推进过程以及FAQ
如何开始
在开发机器上安装bootstrap, bottle,象Web开发一样去开发, 本地调试后
以上传到QPython运行目录/sdcard/com.hipipal.qpyplus/projects/
通过QPython的运行按钮运行查看效果
将在个人电脑上开发的项目上传到手机上有以下方法 - 启动QPython自带的FTP服务:在设置中可以看到FTP服务,开启FTP服务后会显示当前侦听的地址,端口以及帐号,你可以通过FTP客户端将项目目录上传到QPython运行目录 - 如果你的电脑安装了Android开发套件,你也可以连接手机到开发机后,执行 adb push 本地目录 /sdcard/com.hipipal.qpyplus/projects/PM2.5 来把项目上传到QPython的项目目录
用Web开发模式开发QPython WebApp
我们可以使用标准的本地Web开发流程去推进应用开发,左侧为浏览器, 中间为VIM窗口,右侧我们启动bottle开发的Web进程(QPython内建支持Bootle Web框架)
在你的开发机上下载Bootstrap, 并配置Python+bottle运行环境,按照QPython WebApp的规范建立项目目录
获得Bootstrap,获得Bottle
了解QPython中WebApp中文件的结构
上传到QPython运行
你可以将项目上传到手机的QPython项目目录
点击开始按钮即可看到PM2.5选项
启动后可以看到运行效果
功能开发
在UI开发的基础上进行能攻开发,即可得到我们最终的版本,下列为几个关键过程的参考代码:
获得地理坐标
Droid = androidhelper.Android()
location = Droid.getLastKnownLocation().result
location = location.get('network', location.get('gps'))
获得所在城市示范代码
ud ?= urllib.urlopen(';sensor=true' % location)
json_result = ud.read()
ud.close()
""" process json_result """
获得所在城市PM2.5
ud = urllib.urlopen(';token=%s' % (city, token))
json_result = ud.read()
ud.close()
""" process json_result """
根据PM2.5数值给出建议
if pm25_quality == '优':
? ...
elif pm25_quality == '良好':
? ...
elif pm25_quality == '不好':
? ...
elif pm25_quality == '差劲':
? ...
else:
? ...
将关键代码实现后输出即可实现我们本次的目标
你可以获得PM2.5早知道项目源代码源代码
此外,你还想增加什么功能?天气预报, PM2.5变化趋势图以及预测 ?Just do IT !
如何用手机编程Python?
1.QPython3:这是一个在安卓手机上运行python3的脚本引擎,整合了python3解释器、控制台、QEdit编辑器和SLA4库,可以在安卓手机上运行python开发的程序,下面我简单介绍一下这个软件的安装及使用:
下载安装QPython3,这个可以直接在手机应用商店中搜索,如下,大概也就12兆左右:
安装完成后,打开这个软件,主界面如下,分为6部分:终端、编辑器、程序、QPYPI、课程和社区:
终端:类似python shell(或者cmd窗口),可以直接运行输入的python代码:
编辑器:类似电脑的记事本,可以直接编辑python代码,提供基本年的自动补全的功能,编辑完成后,可以点击运行按钮运行程序:
程序:这个是QPython3官方自带的一些简单示例,供初学者参考、学习:
QPYPI:这个模块主要用来安装python的第三方包,包括numpy,scipy,tornado等:
课程:主要是官方提供的一些入门课程,用于初学者更好地学习和掌握这个软件:
2.Termux:这是一个功能强大的高级终端,可以运行shell命令(ssh等),在线安装python后,也可以编辑运行python代码,下面我简单介绍一下这个软件:
安装Termux,这个与上面的QPython3类似,直接下载安装(首次安装,时间可能比较长,保持联网,耐心等待一下):
安装成功后,界面如下,可以使用pkg install来安装包,安装python的话,命令是“pkg install python”,如下:
成功安装python后,就可以运行python了,输入python命令,就会进入python交互式环境如下: