使用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发送arp欺骗攻击代码分析
Jan 16 Python
Python统计列表中的重复项出现的次数的方法
Aug 18 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
Django实现组合搜索的方法示例
Jan 23 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
python3判断url链接是否为404的方法
Aug 10 Python
python实现年会抽奖程序
Jan 22 Python
Python基本socket通信控制操作示例
Jan 30 Python
Pyqt5实现英文学习词典
Jun 24 Python
Python语法垃圾回收机制原理解析
Mar 25 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 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手册及PHP编程标准
2006/12/17 PHP
PHP与SQL注入攻击防范小技巧
2011/09/16 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php实现URL加密解密的方法
2016/11/17 PHP
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
python 字符串格式化代码
2013/03/17 Python
python自定义类并使用的方法
2015/05/07 Python
python实现简易通讯录修改版
2018/03/13 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
Python如何给你的程序做性能测试
2020/07/29 Python
python里glob模块知识点总结
2021/01/05 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
CSS实现fullpage.js全屏滚动效果的示例代码
2021/03/24 HTML / CSS
护士在校生自荐信
2014/02/01 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
四风自我剖析材料
2014/09/30 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏