1、Kivy 的最低要求是 OpenGL ES 2.0 以及 Android 2.2。这现在绝对是覆盖面很广泛了— Kivy 已经都可以在 Android 智能手表上面运行了。
2、当前在技术上存在的一个限制就是 Android 构建工具只能生成 ARM 平台的 APK 文件,这些文件不能运行于 X86 处理器的 Android 设备上,好在目前 这类 X86 的 Android 设备还不是主流。3、参考文档:
(1)Kivy 1.9.2 中文开发文档帮助手册教程
(2)buildozer官方文档
(3)buildozer.spec配置示例
(4)gradle下载地址
以下笔记内容是完成打包之后再记录的内容,大致内容都是已经实践确认,细节内容存在出入。
💰 使用Buildozer打包apk应用
一、Buildozer
1、安装方式
查看参考文档(2)中内容,有详细的安装步骤。
执行命令pip3 install buildozer
即可安装成功。
2、启动方式
- (1)在对应的代码目录执行
buildozer init
进行初始化 - (2)执行
buildozer -v android debug
开始打包
二、安装相关依赖(重要!!!
)
当然,整体的打包步骤很简单,但是最麻烦的是依赖环境的安装。下面以打包Android为例。
1、官方文档的安装方式
如图,在官方文档中已经告诉了我们需要用到的依赖包,也可以直接按照文档中的命令直接执行。
由于个人访问github并不是很畅通,因此使用其他方式安装。
2、单独安装每个依赖
2.1、安装 jdk17.0
这是官方文档中建议安装的版本,因此可以百度搜索其安装方式,并且一定要配置环境变量JAVA_HOME
。
如下图,在终端执行java -version
后,显示17.0的版本时则表示完成。
2.2、安装open-ssl
在打包时会提示需要安装指定版本openssl1.1.1,但是该版本已被弃用,下载不了。同样的,需要手动下载一个安装包,并放到指定位置。(该部分的步骤没有什么印象了…)
2.3、安装Cython、kivy
印象中记得是需要在虚拟环境中安装一部分第三方库,建议可以提前安装,在打包时会将虚拟环境中的第三方库一起打包,可以检查一部分时间。使用pip进行安装,例如:pip3 install kivy
2.4、安装ANT、SDK、NDK
如图所示,通常情况下打包到这里就会失败,因为下面这几个包下载会提示超时,下载失败。
解决方式:
建议将打印出来的日志中的链接复制,手动复制到浏览器中下载,然后再将下载好的文件复制到家目录下的.buildozer/android/platform
路径下(大概率能成功!!!)
2.5、手动安装相关依赖
这部分开始下载官方文档中说明的依赖,同样的可以在日志中找到下载路径,再手动复制到浏览器中下载。
But,还有需要下载第三方库的报错情况(没有截图了,不过有需要下载的包的列表)
以sdl2_image
为例,假设下载路径为:https://github/xxxx/xxxx/SDL2_image-2.8.0.tar.gz
(1)在打包时需要从github下载文件,可以手动复制下载地址到浏览器中下载(我使用手机热点下载都是可以的,文件包很小)。
(2)下载完成后将文件包保存到如图的路径
(3)并根据日志中以.mark-
开头的日志,并创建对应的文件
(4)并根据情况修改软件包的名称,.mark-
开头的文件中后面的内容表示软件包的名称,一定要修改与日志中的一致
2.6 下载gradle
- (1) 错误1:需要更改gradle下载地址
修改代码目录/.buildozer/android/platform/python-for-android/pythonforandroid/bootstraps/common/build/gradle/wrapper/gradle-wrapper.properties
中的distributionUrl
,将参考地址(4)中的地址替换,确保可以正确下载对应的包文件。
(2)错误2:第一次打包成功,但是之后又失败了…
由于修改了.buildozer.spec
文件中的package.name
的值,导致重新下载gradle文件。
解决方式:检查第一步中的文件是否修改正确,根本原因还是第一个错误的情况。
2.7 buildozer.spec配置错误导致的错误
这类情况目前遇到错误,初次可以借鉴参考文档(3)的内容进行配置。
部分配置内容说明:
title
:安装软件包时显示的名字,自定义
package.name
:编译完成后的软件包名,自定义
source.dir
:编译时需要打包的目录,默认.
source.include_exts
:需要打包的文件后缀
source.include_patterns
:同上一个参数,可以指定某个目录下的文件
requirements
:编译时需要下载的第三方库依赖名
其他配置项可以详细阅读官方文档。
三、其他注意问题
1、之后重复打包的问题
若已经成功打包一次,在不修改buildozer.spec
文件的情况下,不会重复下载和编译,相当于可以在离线环境下进行打包。
2、不小心删除了虚拟环境中的依赖包文件
打包软件时最重要的文件是项目根目录下的.buildozer
目录,以及当前电脑用户的家目录下的.gradle
、.buildozer
目录,建议这几个目录不要删除。
3、打包后文件路径
在项目根目录下会生成一个 bin
目录,其中完成的软件包