上次尝试了一下kivy,并且使用Kivy Laucher在安卓手机上成功运行python程序,非常好!又get了一项开发安卓手机端程序的新技能。 但是Kivy Laucher的方式还是不同于安卓手机常用的apk包。如果和其他人分享写好的程序,Kivy Laucher的方式还是比较麻烦的。
所以,我们来尝试打包apk!
目录
打包工具
Kivy官方推荐使用Buildozer来打包,说什么可以自动化打包过程。然而我试了一下,发现安装各种依赖的过程非常的痛苦,虽然是自动下载的,但是因为网络环境的问题,非常的不顺畅。且每次新建一个项目后,打包过程会重复下载很多依赖,这一点让我非常的不理解。如果下载依赖的过程很快也就罢了,无奈每次下载过程都很慢,且会发生问题。
所以我又尝试了 python-for-android (以下简称p4a)。
关于打包apk的官方文档: https://kivy.org/doc/stable/guide/packaging-android.html
p4a
其实p4a也是Kivy官方推荐的打包方式,虽然需要些手工活,但是其实过程也并不复杂。 而且,(似乎)Buildozer也是基于p4a的。
WSL
WSL是Windows Subsystem for Linux,就是Windows下的Linux子系统,比较新版的Win10都可以安装。因为打包需要Linux环境,所以可以用虚拟机安装一个Linux系统。但是因为虚拟机有些笨重,而且安装虚拟机和一个新的Linux系统也有些麻烦,所以WSL成为一个非常好的选择。 安装方便,卸载方便,而且WSL和Windows主系统共享一个文件系统,拷贝文件也非常方便。
需要注意的是,我下面用的是WSL,而不是WSL 2。 WSL和WSL 2不是一个东西。
安装WSL的方法就不多说了,网上的介绍非常的多。WSL可安装的Linux有几个版本,我们这里使用Ubuntu。就目前来说,安装好的Ubuntu版本代号应该是Focal。 我用uname查看的信息如下:
$ uname -a
Linux DESKTOP-MY 4.4.0-18362-Microsoft #836-Microsoft Mon May 05 16:04:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
配置环境
WSL的配置
首先更改apt源为国内源
cd ~
mkdir bak
cp /etc/apt/sources.list ~/bak/
sudo vi /etc/apt/sources.list
将文件更改为如下内容
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
更新系统
sudo apt-get update
sudo apt-get upgrade
安装各种依赖和包
根据buildozer的说明文档安装依赖
- 根据如下网页安装一些buildozer的依赖,buildozer基于p4a,我觉得(猜)buildozer的依赖p4a也应该用得到
https://buildozer.readthedocs.io/en/lat