使用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结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
python字典一键多值实例代码分享
Jun 14 Python
pycharm new project变成灰色的解决方法
Jun 27 Python
python爬虫 爬取58同城上所有城市的租房信息详解
Jul 30 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
Sep 25 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
如何在Python中妥善使用进度条详解
Apr 05 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 获取页面中指定内容的实现类
2014/01/23 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
2013/04/07 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
javascript创建数组之联合数组的使用方法示例
2013/12/26 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
Python利用IPython提高开发效率
2016/08/10 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
python 自动识别并连接串口的实现
2021/01/19 Python
募捐倡议书
2014/04/14 职场文书
2014年教研员工作总结
2014/12/23 职场文书
先进个人评语大全
2015/01/04 职场文书
岳麓书院导游词
2015/02/03 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
倡议书格式及范文
2015/04/29 职场文书
校运会新闻稿
2015/07/17 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android