1、安装docker
到官网下载安装即可docker desktop
2、构建镜像
建议构建1.5.1.dev0,经过测试1.5.0有问题
git clone https://github.com/kivy/buildozer.git
在拉取下来的buldozer目录中打开终端,进行构建镜像,tag后面的是镜像名自己取名,尽量符合规则 拥有者/镜像名:版本标签
docker build tag my/buildozer:标签
构建可能因为网络波动失败,多试几次
构建apk
每次构建不会保存缓存文件,导致每次构建非常慢,我写了一个脚本构建,可以参考
buildozer.bat
@REM version:1.0
@REM 构建apk
@REM 关闭回显
@echo off
@REM 设置中文
chcp 65001 > NUL
setlocal enabledelayedexpansion
@REM 设置使用的镜像
set docker_image="youmetme/buildozer:latest"
@REM 设置工作目录、缓存路径
set hostcwd=%cd%
set buildozer_cache=E:\project\build\.buildozer
set gradle_cache=E:\project\build\.gradle
echo 使用镜像: %docker_image%
echo 工作目录: %hostcwd%
echo 缓存目录: %buildozer_cache%
echo Gradle缓存目录: %gradle_cache%
@REM echo 开始构建apk...
docker run --rm ^
--privileged ^
-v %buildozer_cache%:/home/user/.buildozer ^
-v %gradle_cache%:/home/user/.gradle ^
-v %hostcwd%:/home/user/hostcwd ^
-v %buildozer_cache%:/home/user/hostcwd/.buildozer ^
%docker_image% %1 %2 %3 %4 %5 %6 %7 %8 %9
if %errorlevel% neq 0 (
echo 构建失败...请查看日志
)
@REM 恢复默认编码
chcp 936 > NUL
endlocal
4、相关问题
1、在需要构建的项目目录下运行脚本
2、会在项目目录生成一个空的.buildozer,切记不能删除,构建完可以删
3、构建过程会下载很多依赖在脚本缓存路径,可以自己更改
4、依赖会因为网络下载失败,记得把失败的依赖删除,重新下载,直到成功,或者找网络代理,或者找别人要下载好的依赖缓存
5、如果是别人的依赖文件,哪个依赖报错,就删掉哪个,一般是删掉
E:\project\build\.gradle\daemon\8.0.2
android-ndk-r25b
最后是javaclasses和venv文件
别文为什么,因为docker容器经常因为这几个文件没用权限执行不了,只要构建一次成功,这个缓存文件可以一直用,所有项目都可以,缓存文件记得保存好,不要挪位置!不要挪位置!不要挪位置!,不然重复之前的工作直到可以使用
6、同意ndk协议
把222行改为True并且取消注释,运行时会卡在输入y同意ndk失败一次,再次运行就会自动输入y同意