使用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编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python 列表降维的实例讲解
Jun 28 Python
python求最大值最小值方法总结
Jun 25 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
Django框架获取form表单数据方式总结
Apr 22 Python
Python如何将函数值赋给变量
Apr 28 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
python关于倒排列的知识点总结
Oct 13 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 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中smarty模板条件判断用法实例
2015/06/11 PHP
TP5(thinkPHP5框架)实现显示错误信息及行号功能的方法
2019/06/03 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
JS实现4位随机验证码
2020/10/19 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
KMP算法精解及其Python版的代码示例
2016/06/01 Python
Python2包含中文报错的解决方法
2018/07/09 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
汽车促销活动方案
2014/03/31 职场文书
大学生个人求职信
2014/06/02 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
公司给客户的感谢信
2015/01/23 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
培训计划通知
2015/07/15 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android