使用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 相关文章推荐
Python3遍历目录树实现方法
May 22 Python
利用python将xml文件解析成html文件的实现方法
Dec 22 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
Jul 26 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
Python使用re模块验证危险字符
May 21 Python
Python基础之数据结构详解
Apr 28 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
jQuery之按钮组件的深入解析
2013/06/19 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
[01:03:37]Secret vs VGJ.S Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
深入了解Python数据类型之列表
2016/06/24 Python
利用aardio给python编写图形界面
2017/08/21 Python
python中plot实现即时数据动态显示方法
2018/06/22 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
tensorflow 查看梯度方式
2020/02/04 Python
哪些是python中web开发框架
2020/06/17 Python
python代码区分大小写吗
2020/06/17 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
《伯牙绝弦》教学反思
2014/03/02 职场文书
应届大专生自荐书
2014/06/16 职场文书
2015年信访工作总结
2015/04/07 职场文书
欠条样本
2015/07/03 职场文书
留学文书中的个人陈述,应该注意哪些问题?
2019/08/23 职场文书
linux目录管理方法介绍
2022/06/01 Servers