使用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 ElementTree 基本读操作示例
Apr 09 Python
对于Python装饰器使用的一些建议
Jun 03 Python
Python中的anydbm模版和shelve模版使用指南
Jul 09 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
详解Python中如何写控制台进度条的整理
Mar 07 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python OpenCV实现视频分帧
Jun 01 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Python实现银行账户资金交易管理系统
Jan 03 Python
对python中arange()和linspace()的区别说明
May 03 Python
几款Python编译器比较与推荐(小结)
Oct 15 Python
解决pytorch 模型复制的一些问题
Mar 03 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
简单的用PHP编写的导航条程序
2006/10/09 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
2019/02/22 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
JavaScript实现消消乐的源代码
2021/01/12 Javascript
python 正则表达式 概述及常用字符
2009/05/04 Python
Python科学计算环境推荐——Anaconda
2014/06/30 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Windows下python3安装tkinter的问题及解决方法
2020/01/06 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
python三引号如何输入
2020/07/06 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
观看《永远的雷锋》心得体会
2014/03/12 职场文书
考试保密承诺书
2014/08/30 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
雷锋观后感
2015/06/10 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书
pycharm部署django项目到云服务器的详细流程
2021/06/29 Python
一篇文章了解正则表达式的替换技巧
2022/02/24 Javascript