使用Kivy将python程序打包为apk文件
作者:whlook 发布时间:2021-01-17 21:04:11
1.概述
Kivy
是一套Python
下的跨平台开源应用开发框架,官网,我们可以用
它来将Python
程序打包为安卓的apk
安装文件。以下是在windows环境中使用。
安装和配置的过程中会下载很多东西,确保你能够稳定地访问外网
,另外推荐一个视频教程:Youtube
2. 步骤
第一当然是安装了Python
,我的版本是Python 2.7.13
,然后就是安装Kivy
包:
官网有详细的Kivy包的安装步骤,按照该步骤走完就安装ok。
然后就是写一个简单的程序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()
运行成功,那开发环境基本没问题了。然后下面就是怎么将这个程序打包成apk
。
首先需要安装虚拟机 VirtualBox
,这个没问题,很快就装好了,然后Kivy官方制作了该虚拟机的映像(很体贴),下载后就直接能运行了,省去不少麻烦。下载地址,或者直接去官网下载:
下载并解压之后,打开VB并载入该文件夹下的虚拟机文件,然后运行(登录密码kivy):
进入到该系统中之后,就需要开始配置环境。官方指导
首先我们先在该系统中添加一个共享文件夹,这样可以和windows共享文件,在VB的设备->共享文件夹选项中有配置:
然后我们使用固定分配,在windows下某个路径新建一个文件夹后将其选择为共享文件夹,并选择自动挂载:
然后重新启动虚拟机就可以访问该共享文件夹了:
设置好了共享文件夹后,可以将之前写的测试程序main.py
拷贝到该文件夹,然后在虚拟机中拷贝到桌面备用。
然后打开终端(cd到桌面),执行buildozer init
命令,之后会在桌面上生成buildozer.spec
的配置文件:
然后使用命令gedit buildozer.spec
来编辑该文件,(如果没有gedit可以sudo apt-get install gedit
来安装)
基本不用改什么,那个source.dir 需要注意,这是刚刚我们放在桌面上的main.py
的路径。
然后运行buildozer android_new debug
,接着就开始下载很多东西了,例如Android SDK
,Android NDK
之类,并且是需要访问外网的,自搭梯子。这个过程要很久,让我一度以为出了问题,然后我中午睡一觉起来就差不多了^^。
然后在它自动下载配置之后就会在桌面的bin
文件夹下面生成了apk
文件,可以安装在手机上试一下。
然后基本流程大概如此^^,详细可以去官网了解,我就是按照官网的步骤完成的。
最后再推荐一个MIT开发的快速制作安卓app的网站,http://appinventor.mit.edu/explore/
来源:http://www.cnblogs.com/whlook/p/7256077.html


猜你喜欢
- 栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top)。 举个例子,栈就想一摞洗干净的盘
- 这是我在做的一个游戏的半成品,整理了一下发出来.原理:通过更新变换矩阵来记录转动(函数remx()).利用矩阵计算出转动后的正方体顶点坐标,
- tcp.py # -*- coding: cp936 -*-import socketfrom struct import *from ti
- 新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了
- 前言既然组件不提供view服务引擎,那在编写应用网站的时候只能由javascript调用接口进行UI整合,这样编写javascript来访问
- 前言在搜集了很多文本语料之后,会开始漫长的数据清洗过程,通常要不断迭代。1. 问题描述有些文本数据中,会包含一些特殊符号。猜想可能是从某些富
- 很多时候我们在操作过页面时候,特别是增删改操作之后,数据会有所改变,这个时候我们希望返回的界面中的数据要和数据库中的数据进行同步,就需要刷新
- <?php function getDerivativeByFormulaAndXDATA($formula, $x_data){ $
- 2.1数据的爬取代码:import pandas as pddata=pd.read_csv("example_data.csv&
- 本文实例讲述了Django框架使用内置方法实现登录功能。分享给大家供大家参考,具体如下:一 内置登录退出思维导图二 Dj
- 可以直接参考官方文档:https://docs.microsoft.com/zh-cn/sql/linux/quickstart-insta
- 本文实例讲述了JS实现仿新浪微博发布内容为空时提示功能。分享给大家供大家参考。具体如下:这里使用JavaScript模拟新浪微博的一个功能,
- 很多时候,用户可能会因为承受不了某一产品中的细节设计而放弃使用该产品,这无疑是让设计人员感很沮丧的事情,因为除去这个细节的问题外,这个产品可
- 前言对于数据库中的树形结构数据,如部门表,有时候,我们需要知道某部门的所有下属部分或者某部分的所有上级部门,这时候就需要用到mysql的递归
- 素数(也称质数),是指除了1和该数本身,不能被任何正整数整除的正整数。判断一个正整数m是否为素数,只要判断m可否被2~根号m之中的任何一个正
- 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
- 读视频和写视频一直由于编解码的问题给程序员造成很多麻烦。对此进行了一些探索。用Python读取视频有两种主要方法,分别是基于imageio库
- python字符串,元组,列表,字典互相转换直接给大家上代码实例#-*-coding:utf-8-*- #1、字典dict = {'
- 『写在前面』以CTC Beam search decoder为例,简单整理一下TensorFlow实现自定义Op的操作流程。基本的流程1.
- Numpy、Pytorch中的broadcasting写在前面自己一直都不清楚numpy、pytorch里面不同维数的向量之间的elemen