右键点击项目,弹出菜单。 鼠标移动到run as 选项上,弹出子菜单。然后单击Android application。他就会打包成apk了。 点击项目中bin目录前面的加号展开,就可以看到对应的apk了,然后右键该apk选择copy,再到某个目录点击粘贴就可以复制出来了。
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('http://maps.google.com/maps/api/geocode/json?latlng=%s&sensor=true' % location)。
json_result = ud.read()。
ud.close()
""" process json_result """。
获得所在城市PM2.5
ud = urllib.urlopen('http://www.pm25.in/api/querys/pm2_5.json?city=%s&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 !。
Android模拟器上安装Python解释器。
我了解的有两种方法可以下载并安装Android软件。一个是通过Android直接访问网络,下载安装;另一个是通过PC下载,然后通过模拟器工具ADB安装。这里介绍第二种方式。
下载Python for Android解释器;
解释器框架,点击下载:http://code.google.com/p/android-scripting/downloads/detail?name=sl4a_r3.apk&can=2&q=。
python解释器,点击下载:http://code.google.com/p/android-scripting/downloads/detail?name=PythonForAndroid_r4.apk&can=2&q=。
安装Python for Android解释器;
设置环境变量,加入Android模拟器工具 adb.exe所在的路径。
打开cmd运行界面,输入adb。你会看到如下信息:
输入adb device。
输入adb install –s <解释器框架所在路径>;比如adb install –s c:/sl4a_r3.apk。安装完毕后,在你的android中就会出现SL4A图标。
同上的步骤,再把python解释器安装上。比如adb install –s c:/PythonForAndroid_r4.apk。安装完毕后,在你的Android中就会出现Python for Android图标。
在Android中点击Python for Android。进去后,有一个install的button,点击安装。这个程序会通过网络,下载到所需要的所有程序包。
测试Python for Android解释器;
当一切安装妥当后,在Android中点击SL4A图标。
在出现的列表中点击hello_world.py(或者其他的脚本);界面左上角会出现一个小的SL4A的图标,同时界面也会出现“hello world!”
如果你的Android运行结果如上所述,证明你的安装成功了,继续下一步。
Step4 : 编写可在Android模拟器运行的Python Script并执行。
编写Python Script For Android;
传递Python Script到Android模拟器;。
假设你编写的python脚本存放在c:/Hello_world.py中。
打开cmd界面,运行adb push <local> <remote>;例如,adb push c:/Hello_world.py /sdcard/sl4a/scripts/Hello_wold.py。
在Android模拟器上运行Python Script;。
在Android上运行脚本,你会看到“Hello world!”出现在屏幕上。 (如同step3的结果)
如果你的运行结果如上所述,那么恭喜你,你已成功上传并运行了你的第一个android python脚本,继续下一步。
1、下载并安装py2exe,可下载最新版本。
2、编写安装脚本,比较简单,不过多解释,如下:
Screenshot_setup.py。
#!/usr/bin/env python。
# -*- coding: utf-8 -*-。
from distutils.core import setup 。
import py2exe 。
includes = ["encodings", "encodings.*"] 。
data_files = ['CameraDll.dll'] 。
options = {"py2exe": 。
{ "compressed": 1, 。
"optimize": 2, 。
"bundle_files": 1, 。
"includes": includes。
。
}
}
setup(
version = "1.0", 。
description = "Screenshot Tool", 。
name = "Screenshot Tool", 。
options = options, 。
zipfile=None,。
data_files = data_files,。
console=[{"script": "Screenshot.py", "icon_resources": [(1, "Screenshot.ico")] }]。
)
各参数含义见第5小节或执行python命令行下执行help(py2exe)查看。
3、打包程序:
a、将要找包的程序、文件和打包脚本放在同一目录下,如下:
E:\tmp\pyexe_tmp>tree /F。
文件夹 PATH 列表
卷序列号码为 0007F240 101F:F68D。
E:.
CameraDll.dll。
screenshot.ico。
Screenshot.py。
screenshot_setup.py。
没有子文件夹
E:\tmp\pyexe_tmp>。
b、执行打包脚本:
E:\tmp\pyexe_tmp>python screenshot_setup.py py2exe。
python screenshot_setup.py py2exe。
running py2exe
creating E:\tmp\pyexe_tmp\build。
creating E:\tmp\pyexe_tmp\build\bdist.win32。
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe。
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\collect-2.6。
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\bundle-2.6。
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\temp。
creating E:\tmp\pyexe_tmp\dist。
*** searching for required modules ***。
*** parsing results ***。
*** finding dlls needed ***。
*** create binaries ***。
*** byte compile python files ***。
writing byte-compilation script 'e:\tmp\tmp1ecbcw.py'。
前言:用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,我想我会另起一篇文章吧。
原文地址:http://www.qianchusai.com/pythonforandroid%E6%89%93%E5%8C%85.html