使用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 31 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
python实现ping的方法
Jul 06 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
django如何连接已存在数据的数据库
Aug 14 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
Django框架实现分页显示内容的方法详解
May 10 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
详解Django3中直接添加Websockets方式
Feb 12 Python
python按照list中字典的某key去重的示例代码
Oct 13 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+js实现异步图片上传实例分享
2014/06/02 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
php验证码生成器
2017/05/24 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
jquery tools之tooltip
2009/07/25 Javascript
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
js实现随机圆与矩形功能
2020/10/29 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
2014年计算机专业个人自我评价
2014/01/19 职场文书
诚信承诺书
2015/01/19 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
PostgreSQL怎么创建分区表详解
2022/06/25 PostgreSQL
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript