使用python kivy构建手机可安装的apk软件,亲测有效(python可以手机安装-)
可将python kivy框架编写的程序打包成APK文件,亲测有效。欢迎小伙伴们点赞收藏,以备下次需要时可以快速找到。
下面是本人通过不断尝试,终于可以成功将自定义程序打包成了手机能安装的app文件,首先要保证网络足够好,在打包编辑过程中会有很多东西需要在github上下载,
准备:
系统:Ubuntu 20.04.6 LTS
python 版本:Python 3.8.10 系统自带即可
kivy 版本:1.9.1(由自己实际程序编写的版本为准)
buildozer版本 1.5.0
cython: 3.0.1 (看官网上kivy2.2.1对应的版本是3.x.x)
登录官网:https://github.com/kivy/kivy 查看
一、安装lib库
1.1
sudo apt-get update sudo apt-get dist-upgradesudo apt-get install make git zip unzip dpkg libffi-dev zlib1g-dev sudo apt-get install build-essential libgl1-mesa-dev libgles2-mesa-dev python3-devsudo apt-get install autoconf libtool libevent-devsudo apt-get install openjdk-11-jdk -y sudo apt-get install build-essential python-dev python-setuptools sudo apt-get install libncursesw5-dev libgdbm-dev libc6-devsudo apt-get install zlib1g-dev libsqlite3-dev tk-devsudo apt-get install libssl-dev openssl cythonsudo apt-get install python3-ip
二、 安装buildozer
sudo pip3 install buildozer
三,打包成apk文件
以上准备工作已经做完,第一次打包会下载所有需要的包,所以打包时需要网络畅通,许多包都是需要在github上下载,所以需稳定访问github,可以找一个加速访问的工具,
3.1 加速器下载地址:https://github.com/dotnetcore/FastGithub
如果github网络不稳定,可以下载加速器
将加速器放在linux系统上某个自定义目录下:
export http_proxy=http://127.0.0.1:38457 #设置网络代理export https_proxy=http://127.0.0.1:38457env | grep -i proxy #查看当前代理设置sudo ./fastgithub #将程序解压后执行
3.2 初始化项目
cd 项目路径建立main.py文件sudo buildozer init
3.3 修改修改buildozer.spec文件(Cython建议写入,其他第三方模块根据需要写入)
requirements = kivy==2.2.1,Cython==3.0.1 #将需要导入的第三方包写入
requirements
sudo buildozer -v Android debug #再项目所在目录执行
成功执行完命令后会在项目所在目录下的bin目录下生成apk软件
四,再次打包其他程序
1. 进入到您要打包成 apk 的软件项目目录中。
2.删除程序目录下原有的buildozer.spec文件,删除程序下原程序的代码文件,切记不要删除.开头的文件,然后重新构建
rm -rf buildozerbuildozer init
4.编辑新生成的buildozer.spec 文件将需要加载的第三方文件,已经需要打包进程序的文件结尾加进去(最好都加上Cython,我用的是3.0.1版本,其他第三方模块需要写入)
buildozer.spec文件
5. 运行命令sudo buildozer -v android debug或者sudo buildozer android release(具体根据您的需求选择)来构建 APK。
sudo buildozer -v android debug
注:
有时候,buildozer的缓存可能导致文件冲突。你可以尝试清理buildozer的缓存,然后再次运行打包命令。可以通过运行以下命令来清理缓存:
buildozer distclean
意思是使用 buildozer 工具在 Android 环境中进行构建,并清理构建过程中生成的临时文件和构建输出。
sudo buildozer -v android clean
总结: 再打包apk软件环境的过程中会出现各种的问题,大家一定要看日志输出的是什么,第一大问题就是网络问题,有些包需要反复执行buildozer多次才能下载。尤其到需要下载jpeg zlip文件的时候,如果中途网络断掉,需要重新删除已经下载的文件再次执行构建命令。
下面是我最后遇到的问题:
# unzip gradle-7.4.1-all.zip Archive: gradle-7.4.1-all.zip End-of-central-directory signature notfound. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In thelatter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of gradle-7.4.1-all.zip or gradle-7.4.1-all.zip.zip, and cannot find gradle-7.4.1-all.zip.ZIP, period
大概意思是gradle-7.4.1-all.zip 没有下载成功,其实在执行buildozer构建的时候会提示下载这个文件的位置,大家可以提前下载好,等构建过程中出现上面的问题时,找到gradle-7.4.1-all.zip存放的位置,删除原来的文件,将自己下载的文件放到此处。
总之,制作打包环境真的是不易啊,做好环境后给自己的虚机做个快照,以免系统出问题再次构建打包环境。