Kivy 是一个开源的 Python 框架,用于快速开发应用,实现各种当前流行的用户界面,比如多点触摸等等,可以运行于 Windows, Linux, MacOS, Android, iOS 等当前绝大部分主流桌面 / 移动端操作系统。

本文介绍了在虚拟机上用 kivy 打包安卓的详细过程

这里很多东西都需要用 VPN 才能下载的比较快

http://kivy.braintrainerplus.com/Kivy_Complete_VM_0.7.ova ,这是整合包的下载链接,也就是已经集成好打包环境的 linux 虚拟机
https://download.virtualbox.org/virtualbox/6.1.4/VirtualBox-6.1.4-136177-Win.exe ,这是虚拟机的下载链接,虚拟机安装好后可能会自动提示要扩展,到时候进行扩展就行了
https://download.virtualbox.org/virtualbox/5.2.10/Oracle_VM_VirtualBox_Extension_Pack-5.2.10.vbox-extpack ,这是扩展包的下载链接,不过当时用这东西也没扩展成功,最后似乎是虚拟机导入那个整合包的时候自动提示更新的

进入虚拟机后,找到 >>home>>kivy>>Repos>>Python3>>kivy>>examples>>demo>>touchtracker 中的 buildozer.spec 文件,复制到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 中同时把要打包的 py 文件改名为 main.py,也放到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 中,main.py 文件中调用的音频和图片等文件也可以放到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 中

然后打开虚拟机命令符窗口,切换到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录,输入 buildozer android debug,回车,之后会自动下载安装打包需要用到的各种东西。(!下载的似乎比较慢,我当时下载了五个小时以上,可以先把这个压缩包(链接:https://pan.baidu.com/s/1uNOeAJznZ2kQOaud383-pA 提取码:xsj4)中的已经下载好的所有库文件放到 /home/kivy/Repos/kivy/examples/.buildozer/android/platform/build-armeabi-v7a/packages/ 中,选择全部替换掉,或许可以提高速度,可能只用一个多小时就好了吧。如果担心出问题,可以先把原来的文件备份之后再替换。替换完之后,再打开虚拟机命令符窗口,切换到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录,输入 buildozer andro debug,点击回车)

如果虚拟机内部没有 VPN,那么输入 buildozer android debug 后,更新会失败,所以得有 Linux 版本的 VPN。

如果需要调用其它库,可以找到之前复制到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录下的 buildozer.spec 文件,打开后修改其中的 requirements, 把需要的库按照文档中的格式加上去,比如 numpy 之类的。在此需要注意有些第三方库可能会不支持打包成安卓,能打包的可能只有一小部分库,得尝试一下。之后再进入命令符窗口,切换到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录,输入 buildozer android debug,回车,就会自动下载第三方库并安装到 /home/kivy/Repos/kivy/examples/.buildozer/android/platform/build-armeabi-v7a/packages/ 中了。

添加库之后打包的 apk 体积会变大,如果想把多余的库从打包的 apk 中除去,可以找到之前复制到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录下的 buildozer.spec 文件,打开后修改其中的 requirements, 把库的名字删去,然后打开命令符窗口,切换到 >>home>>kivy>>Repos>>Python3>>kivy>>examples 目录,先输入 buildozer android clean,等待完毕之后再输入 buildozer android debug。如果不先输入 buildozer android clean,而是直接输入 buildozer android debug,多余的库仍然会打包进 apk 文件。

kivy 官网:https://kivy.org/#home

kivy 官网教程文档:https://kivy.org/doc/stable/guide/basic.html

kivy 官方各种函数的查询:https://kivy.org/doc/stable/api-kivy.html

kivy 的一些教程:
https://www.bilibili.com/video/av20457202?from=search&seid=743874360561979087(B 站上的,似乎有 7 集)
https://blog.csdn.net/shijilongren/article/details/90764689?utm_source=app(有四篇比较好的例子)

kivy 例子的压缩包,里面有很多实用的例子:
链接:https://pan.baidu.com/s/1kb5l7W-xzhPc_S0STKOSEA
提取码:1fmu

kivy 编程指南中文版(里面翻译了部分 kivy 官方文档):
链接:https://pan.baidu.com/s/1SbqM9mfQ63T2BCwkGjm0HA
提取码:p3u6