使用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程序与C程序的结合使用
Apr 07 Python
浅析Python 中整型对象存储的位置
May 16 Python
python读取中文txt文本的方法
Apr 12 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
Feb 07 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
详解KMP算法以及python如何实现
Sep 18 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 Python
Python Matplotlib绘制条形图的全过程
Oct 24 Python
Python面向对象编程之类的概念
Nov 01 Python
基于Python实现将列表数据生成折线图
Mar 23 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/01 无线电
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP常用数组函数介绍
2014/07/28 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php表单敏感字符过滤类
2014/12/08 PHP
JavaScript实现滚动栏效果的方法
2015/04/27 PHP
javascript脚本调试方法小结
2008/11/24 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
javascript无刷新评论实现方法
2015/05/13 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
微信小程序WebSocket实现聊天对话功能
2018/07/06 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[40:31]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python 列表删除所有指定元素的方法
2018/04/19 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python列表解析配合if else的方法
2018/06/23 Python
Django框架实现的分页demo示例
2019/05/25 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
Python自定义一个异常类的方法
2019/06/27 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python的launcher用法知识点总结
2020/08/07 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
优秀部门获奖感言
2014/02/14 职场文书
学校募捐倡议书
2014/05/14 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
mysql5.7使用binlog 恢复数据的方法
2021/06/03 MySQL
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers