1. 准备一台能访问Internet的主机(debian),并且配置文件服务器,然后上传代码
2. 安装docker(顺序执行以下命令)
apt-get update
apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt-get update
apt-cache policy docker-ce #列出匹配版本的docker-ce
apt-get install docker-ce
systemctl status docker #检查docker是否运行
3. 搜索docker镜像
docker search buildozer
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
kivy/buildozer Generic Python packager for Android and iOS … 12
jedie/buildozer Create Andorid .apk for kivy apps with build… 2
boringbox/buildozer Kivy buildozer 1 [OK]
rubygem/buildozer Auto-Generated Image for Ruby Gem buildozer 0 [OK]
buildozer/cache-control-proxy 0
buildozer/geminabox Dockerized Gem in a Box server 0 [OK]
tshirtman/buildozer a docker image to build android apps from ki… 0 [OK]
buildozer/squid 0
brvier/buildozer Buildozer batteries included image for build… 0
buildozer/webdav Simple WebDAV container for development purp… 0
lordjabez/buildozer Image for using buildozer to create Android … 0
homdx/buildozer buildozer 0 [OK]
buildozer/mailhog 0
unsuitable001/buildozer3 A docker container for using Buildozer with… 0
datalife/buildozer-tryvy Tryvy buildozer docker image 0
buildozer/redis Redis Server 0
olymk2/buildozer 0
adin234/buildozer-gfortran Buildozer with gfortran for arm64 devices 0
tom333/buildozer_actions 0
wwstory/buildozer Build kivy android app out of the box 0
kmocypress/buildozer Fixed up buildozer dockerfile based on https… 0
tuna42/buildozer_test 0
gutentag917/buildozer 0
fragaliano/buildozer 0
baykier/buildozer 0
这里选择kivy/buildozer镜像
4. 下载镜像
docker pull kivy/buildozer
docker images #列出本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
kivy/buildozer latest 1d7a68c5b814 19 months ago 1.14GB
5. 运行容器
docker run -itd --name buildozer --privileged=true --volume "$PWD":/home/user/hostcwd --entrypoint /bin/bash kivy/buildozer
docker ps #列出当前运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
88cd479473e7 kivy/buildozer "/bin/bash" 49 seconds ago Up 48 seconds buildozer
docker exec -it buildozer /bin/bash #运行容器
python3 -m pip install --upgrade pip
6. 打包
pip install buildozer
pip install -i https://mirrors.aliyun.com/pypi/simple/ buildozer #国内
sudo apt-get install git
pip install cython
pip install -i https://mirrors.aliyun.com/pypi/simple/ cython #国内
sudo apt-get install openjdk-11-jdk
修改 python的安装目录/site-packages/buildozer/targets/android.py
#62行:
#p4a_fork = 'kivy' #国外
p4a_fork = 'mirrors' #国内
#730行:
#'app', 'p4a.url', f'https://github.com/{p4a_fork}/python-for-android.git'
'app', 'p4a.url', f'https://gitee.com/{p4a_fork}/python-for-android.git'
sudo apt-get install autoconf automake libtool
sudo apt-get install libffi-dev
进入python源代码文件夹
buildozer init
#102行:
#android.api = 27
android.api = 33
buildozer android debug
如果在打包过程中发现下载失败,可以进入虚拟环境中自行安装,例如下面的虚拟环境:
~/kivy-proj/ex1/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build$ source venv/bin/activate
打包成功会在bin文件夹中生成一个apk文件