使用Kivy将python程序打包为apk文件


Posted in Python onJuly 29, 2017

1.概述

Kivy是一套Python下的跨平台开源应用开发框架,官网,我们可以用
它来将Python程序打包为安卓的apk安装文件。以下是在windows环境中使用。

安装和配置的过程中会下载很多东西,确保你能够稳定地访问外网,另外推荐一个视频教程:Youtube

2. 步骤

第一当然是安装了Python,我的版本是Python 2.7.13,然后就是安装Kivy包:

官网有详细的Kivy包的安装步骤,按照该步骤走完就安装ok。

使用Kivy将python程序打包为apk文件

然后就是写一个简单的程序main.py测试一下:

import kivy
kivy.require('1.9.1')
from kivy.app import App
from kivy.uix.button import Button

class test(App):
  def build(self):
    return Button(text='hello world')
  

if __name__ == '__main__':
  test().run()

运行截图:
使用Kivy将python程序打包为apk文件

运行成功,那开发环境基本没问题了。然后下面就是怎么将这个程序打包成apk

首先需要安装虚拟机 VirtualBox,这个没问题,很快就装好了,然后Kivy官方制作了该虚拟机的映像(很体贴),下载后就直接能运行了,省去不少麻烦。下载地址,或者直接去官网下载:

使用Kivy将python程序打包为apk文件

下载并解压之后,打开VB并载入该文件夹下的虚拟机文件,然后运行(登录密码kivy):

使用Kivy将python程序打包为apk文件

进入到该系统中之后,就需要开始配置环境。官方指导

首先我们先在该系统中添加一个共享文件夹,这样可以和windows共享文件,在VB的设备->共享文件夹选项中有配置:

使用Kivy将python程序打包为apk文件

然后我们使用固定分配,在windows下某个路径新建一个文件夹后将其选择为共享文件夹,并选择自动挂载:

使用Kivy将python程序打包为apk文件

然后重新启动虚拟机就可以访问该共享文件夹了:

使用Kivy将python程序打包为apk文件

设置好了共享文件夹后,可以将之前写的测试程序main.py拷贝到该文件夹,然后在虚拟机中拷贝到桌面备用。

然后打开终端(cd到桌面),执行buildozer init命令,之后会在桌面上生成buildozer.spec的配置文件:

使用Kivy将python程序打包为apk文件

然后使用命令gedit buildozer.spec来编辑该文件,(如果没有gedit可以sudo apt-get install gedit来安装)

使用Kivy将python程序打包为apk文件

基本不用改什么,那个source.dir 需要注意,这是刚刚我们放在桌面上的main.py的路径。

然后运行buildozer android_new debug,接着就开始下载很多东西了,例如Android SDK,Android NDK之类,并且是需要访问外网的,自搭梯子。这个过程要很久,让我一度以为出了问题,然后我中午睡一觉起来就差不多了^^。

然后在它自动下载配置之后就会在桌面的bin文件夹下面生成了apk文件,可以安装在手机上试一下。

然后基本流程大概如此^^,详细可以去官网了解,我就是按照官网的步骤完成的。

最后再推荐一个MIT开发的快速制作安卓app的网站,http://appinventor.mit.edu/explore/

Python 相关文章推荐
Python实现八大排序算法
Aug 13 Python
Linux 修改Python命令的方法示例
Dec 03 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
python实现关闭第三方窗口的方法
Jun 28 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
python实现翻转棋游戏(othello)
Jul 29 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python使用列表的最佳方案
Aug 12 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
Dec 05 Python
浅谈Python数学建模之固定费用问题
Jun 23 Python
python对配置文件.ini进行增删改查操作的方法示例
Jul 28 #Python
Python3中使用PyMongo的方法详解
Jul 28 #Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 #Python
Python单体模式的几种常见实现方法详解
Jul 28 #Python
深入浅出分析Python装饰器用法
Jul 28 #Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 #Python
Python使用sorted排序的方法小结
Jul 28 #Python
You might like
php抓即时股票信息
2006/10/09 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
新闻内页-JS分页
2006/06/07 Javascript
javascript中对对层的控制
2006/12/29 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
详解vue表单——小白速看
2018/04/08 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
vue+element实现动态加载表单
2020/12/13 Vue.js
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python解析nginx日志文件
2015/05/11 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python排序搜索基本算法之归并排序实例分析
2017/12/08 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
python搜索包的路径的实现方法
2019/07/19 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
英国顶级水晶珠宝零售商之一:Tresor Paris
2019/04/27 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
安全教育片观后感
2015/06/17 职场文书