如何Python写一个安卓APP

作者&投稿:祁柴 (若有异议请与网页底部的电邮联系)
如何Python写一个安卓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 ple/123
值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,h然后就是安装kivy了
python -m pip install kivy12
至此,安装就已经完毕了,值得注意的是64位系统没有开启虚拟化支持,在导入kivy的时候会报错,如果是64位系统就设置一下机器的BIOS,开启虚拟化支持吧。 注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。
如果kivy在python中应该就能导入了。

按照世界惯例,我们”hello”一下吧。 新建一个.py文件
from kivy.app import Appfrom kivy.uix.button importButtonclass 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###定义类,名字必须是xxxAppclass TestApp(App):###build一个Buttondef 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 machineJavaPython 2.7 (not 2.6.)Jinja2 (python module)Apache antAndroid 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 applicationtitle = helloworld# (str) Package namepackage.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: timetext: 'xxxx'font_size: 6012345
id为time,text文本内容为’xxxx’,然后字体为60 好吧,点到为止吧,不过似乎什么都没点到~~~
从无到有做一个App,我想我会另起一篇文章吧。

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

安装所需要的依赖;

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

前言:用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 ple/123

值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,h
然后就是安装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 写一个股票自动交易的程序?
方法一 前期的数据抓取和分析可能python都写好了,所以差这交易指令接口最后一步。对于股票的散户,正规的法子是华宝,国信,兴业这样愿意给接口的券商,但貌似开户费很高才给这权利,而且只有lts,ctp这样的c++接口,没python版就需要你自己封装。方法二 是wind这样的软件也有直接的接口,支持部分券商,但...

如何用9行Python代码编写一个简易神经网络
学习人工智能时,我给自己定了一个目标--用Python写一个简单的神经网络。为了确保真得理解它,我要求自己不使用任何神经网络库,从头写起。多亏了Andrew Trask写得一篇精彩的博客,我做到了!下面贴出那九行代码:在这篇文章中,我将解释我是如何做得,以便你可以写出你自己的。我将会提供一个长点的...

python怎么写一个服务
from tkinter import *from ttk import * # 更美观的控件root = Tk()text1 = StringVar()text2 = StringVar()def test(): text2.set(text1.get())l1 = Label(text='Yuan Bao')l2 = Label(text='Miwen Bao')e1 = Entry(root, width=50, textvariable=text1)e2=Entry(root, ...

Python 如何写脚本?
Python写脚本步骤如下:1、首先下载安装python,建议安装2.7版本以上。2、打开文本编辑器,推荐editplus,notepad等,将文件保存成 .py格式,editplus和notepad支持识别python语法。脚本第一行一定要写上 #!usr\/bin\/python,表示该脚本文件是可执行python脚本,如果您的python目录不在usr\/bin目录下,则替换...

Python入门编程(1)变量
其实绝大多数的报错无非是在程序的某一行多写或少写一个字符,或是一些逻辑性的错误。在阅读Traceback以及寻找解决这些Bug的方法时我们应当 耐心 和 冷静 。这样会提升你解决问题的速度。本次的文章对变量进行了初步的认识与学习,在接下来的文章中,我们将对更多Python中的相关知识进行阐述与学习。

怎么用python实现一个页面的开发?
关于后端 在python中有两个最常见的开发框架:Django,flask。Django大而全,什么功能模块都已经封装好了,调用即可;flask小而精,没有很高的封装,但是有许多功能模块,需要我们自己去集成。当初学习的那个网络课程是用flask框架来做的,上手很简单:当初学习的时候能写一个小的网站,本来想转行做python...

怎么用python爬虫写一个抢课软件
说一下技术上的几个问题吧 1.模拟登陆requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题。你需要找到教务网登录按钮提交的地址,把你的学号和密码弄到一个字典里发...

用python 写一个代码 输出指定的名字
mapper = dict(zip(('Tom', 'Joes', 'Ki', 'Tim'),('Teenage', 'Mutant', 'Ninja', 'Turtles')))def getName():while True:name = raw_input("Enter a name: ")if name in mapper:return name print "got:%s" % mapper.get(getName())...

如何用python 写一段预处理文件用於weka的,下面是文件例子
f=open(file1,'r')g=open(file2,'w')for i in f:g.write(i.replace(' ',','))f.close()g.close()file1,file2,分别是读和写的文件,i指的是file1里的每一行

请大神用Python 写一段代码,题目如下:输入两只电阻的阻抗,分别求它们并 ...
!\/usr\/bin\/python# -*- coding:utf-8 -*-# @Time : 2018\/6\/14 9:30# @File : resistance.py"""计算串联和并联的电阻"""def resistance(ar1, ar2): assert ar1 > 0 and ar2 > 0, u'除非超导体,其他电阻必须大于0' if isinstance(ar1, (int, float)) and isinst...

博兴县13181121385: 如何Python写一个安卓APP -
羿馨赖氨: 用 python 写安卓 APP 肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习 Java ,再者,就编程而言已经会的就 Python 与 Golang( 注: Python , Golang 水平都一般 ) ,那么久 Google 了一下 Python 写安卓的 APP 的可...

博兴县13181121385: 怎么用python编android app -
羿馨赖氨: 前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,...

博兴县13181121385: 如何使用QPython开发Android应用 -
羿馨赖氨: 在使用python开发android应用之前我们需要准备好环境,环境需要安装PythonForAndroid,然后开始编程,编程时打开eclipse, 创建一个新的android project “introduction”,设置对象等等步骤,最后完成.整个开发的过程步骤虽然不是很复...

博兴县13181121385: python可以开发手机app吗? -
羿馨赖氨: python可以开发手机app,因为这也是一款编程的软件,如果你用这款软件去开发手机APP的话,就有一点大材小用的感觉了.这也说明这款软件的强大性.

博兴县13181121385: python怎样编写手机软件?能简要说一下步骤吗?(s60v3系统的) -
羿馨赖氨: 写一个(或者多个)功能模块,完成一定的功能; 写一个引导模块,在main函数中调用功能模块中的函数; 利用py2sis工具将需要的模块封装成为sis文件,即塞班的安装文件.

博兴县13181121385: 如何让自己在电脑上写的python脚本在手机或安卓系统上运行 -
羿馨赖氨: 可以的.正确的说法是python可以运行在android上.因为可以在android上安装一个python runtime就OK啦!就好比python也可以运行在symbina、windows mobile、plam os 、arm的blackberry一样.原生的android应用是用java写的.毕竟android系统也是用java写的...呵呵.如果你可以用python写一个手机操作系统那么也很棒哦.哈~(题外话),总得来说.可以编写安卓程序(好像是说以后android默认会内置python解释器,意思就是说不需要额外的安装python到手机里面也可以直接运行py程序了哦!)还有啥一起交流的补充一下吧!哥们

博兴县13181121385: python可以开发安卓应用吗 -
羿馨赖氨: 不太理想,如果你只会py,而且又有充足的精力的话,你可以那py来开发安卓程序,当然实现情况是可以利用的资源太少.(已有的例子少,相关书籍少,关键那它开发出来的实际产品也少...),所以,你喜欢的话我很支持你,如如果开发出来的话,放到oschina的git上,我一定收藏.

博兴县13181121385: python可以写手机应用程序吗 -
羿馨赖氨: 可以,去看一下sl4a,或者qpython

博兴县13181121385: 用Python开发Android程序到底怎么样 -
羿馨赖氨: 完全没问题,目前python for android项目的进展很迅速,python能在android上稳定运行.是否流畅还要看硬件配置如何了.图形界面也有成熟的项目,比如kivy等.可以制作稳定实用的Ap

博兴县13181121385: python 可以写手机程序吗 -
羿馨赖氨: 可以写.而且有些好玩.比如在安卓上可以用qpython.做服务器,WEB,还有CONSOLE,桌面应用.当然在其它的平台上,按理也可以.PYTHON的解释器并不大,库也不大,移植不难.以前在NOKIA的S60平台上,PYTHON有一个平台很强大.可惜.现在没有这样的平台了.QPYTHON还比不上.现在一般嵌入式系统里都可以嵌入一个PYTHON.因为内存大了.以前只有几十K内存的时代是不可能的.最多用LUA.现在就可以用PYTHON了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网