使用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代理抓取并验证使用多线程实现
May 03 Python
python基础教程之python消息摘要算法使用示例
Feb 10 Python
Python做简单的字符串匹配详解
Mar 21 Python
Python基于正则表达式实现文件内容替换的方法
Aug 30 Python
python ansible服务及剧本编写
Dec 29 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
python sorted方法和列表使用解析
Nov 18 Python
Python关于反射的实例代码分享
Feb 20 Python
如何写python的配置文件
Jun 07 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
python用tkinter实现一个简易能进行随机点名的界面
Sep 27 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
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
JavaScript中“+”的陷阱深刻理解
2012/12/04 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
2016/05/20 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python格式化css文件的方法
2015/03/10 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
工程师自我评价怎么写
2013/09/19 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
比赛主持人开场白
2015/05/29 职场文书
python glom模块的使用简介
2021/04/13 Python
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js