在 Ubuntu/Debian 系统上,打开终端并运行以下命令安装所有必需的依赖:
bash# 更新系统包管理器
sudo apt update
sudo apt upgrade -y
# 安装编译工具和依赖
sudo apt install -y python3-pip python3-setuptools python3-virtualenv git zip unzip
sudo apt install -y build-essential libffi-dev zlib1g-dev libncursesw5-dev
sudo apt install -y libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev
sudo apt install -y libssl-dev openssl cython libxml2-dev libxslt1-dev
# 安装图形和 OpenGL 相关依赖
sudo apt install -y libgl1-mesa-dev libgles2-mesa-dev
# 安装 Java 开发工具包
sudo apt install -y openjdk-11-jdk
bash# 安装 Kivy
pip3 install kivy
# 安装 Buildozer
pip3 install buildozer
创建一个项目目录,并在其中创建 main.py 文件:
pythonfrom kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text='Hello, Kivy!')
if __name__ == '__main__':
MyApp().run()
在继续之前,先测试你的应用是否能正常运行:
bashpython3 main.py
如果一切正常,你应该能看到一个显示 "Hello, Kivy!" 按钮的窗口。
在项目目录中运行以下命令:
bashbuildozer init
这会在当前目录生成一个 buildozer.spec 文件,其中包含了所有的构建配置。
以下表格列出了 buildozer.spec 文件中需要关注和可能修改的重要配置项:
| 配置项 | 描述 | 示例值 |
|---|---|---|
title | 应用名称 | My Kivy App |
package.name | 应用包名(全部小写) | myapp |
package.domain | 应用域名(组织反域名) | org.example |
source.dir | 源代码目录 | . |
source.include_exts | 包含的文件类型 | py,png,jpg,kv,atlas,txt |
version | 应用版本号 | 0.1 |
requirements | Python 依赖 | python3,kivy,cython |
android.permissions | Android 权限 | INTERNET, WRITE_EXTERNAL_STORAGE |
presplash.filename | 启动画面图片 | %(source.dir)s/data/presplash.png |
icon.filename | 应用图标 | %(source.dir)s/data/icon.png |
根据你的需求修改 buildozer.spec 文件:
ini[app]
title = My Kivy App
package.name = myapp
package.domain = org.example
source.dir = .
source.include_exts = py,png,jpg,kv,atlas,txt
version = 0.1
requirements = python3,kivy,cython
[buildozer]
log_level = 2
[app::android]
permissions = INTERNET
[app::android:meta_data]
如果你需要访问网络、存储等功能,记得在 android.permissions 中添加相应权限。
在项目目录中运行以下命令开始构建:
bashbuildozer -v android debug
注意:
如果在国内或遇到网络问题,可以尝试以下方法:
bash# 设置 HTTP/HTTPS 代理(根据你的实际情况修改)
export http_proxy=http://127.0.0.1:38457
export https_proxy=http://127.0.0.1:38457
# 或者使用 FastGithub 等加速工具
buildozer -v android debug - 包含调试信息,未签名buildozer -v android release - 需要签名,用于上架应用商店构建成功后,APK 文件会生成在 bin 目录中:
bin/MyApp-0.1-debug.apkbin/MyApp-0.1-release.apk方法一:使用 ADB 安装
bashadb install bin/MyApp-0.1-debug.apk
方法二:手动安装
如果应用运行异常,可以通过以下命令查看日志:
bashadb logcat | grep python
以下表格汇总了打包过程中可能遇到的常见问题及解决方法:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| SSL/SSH 错误 | Ubuntu 版本过旧 | 使用 Ubuntu 18.04 或更高版本 |
| 下载过程中失败 | 网络不稳定 | 设置代理或使用加速器 |
| 文件已存在错误 | 上次下载不完整 | 删除 .buildozer 文件夹重新下载 |
| 提取压缩包失败 | 下载文件损坏 | 手动下载并替换对应文件 |
| 应用启动崩溃 | 缺少依赖库 | 检查 requirements 是否包含所有依赖 |
| 预加载画面卡住 | 资源文件问题 | 检查图标和启动画面文件格式 |
如果遇到构建问题,可以尝试清理缓存:
bash# 清理构建文件
buildozer android clean
# 完全清理(包括下载的依赖)
buildozer distclean
如果应用使用了其他 Python 库,确保在 buildozer.spec 的 requirements 中添加它们:
inirequirements = python3,kivy,cython,requests,pillow
要对发布版 APK 进行签名,首先创建密钥库:
bashkeytool -genkey -v -keystore my-release-key.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
然后在 buildozer.spec 中配置:
ini[app]
# 发布构建配置
buildozer.release_keystore = /path/to/my-release-key.keystore
buildozer.release_keystore_password = YOUR_PASSWORD
buildozer.release_key_alias = my-alias
buildozer.release_key_password = YOUR_PASSWORD
ini[app]
# 只指定需要的架构
android.arch = armeabi-v7a
# 排除不必要的文件
source.exclude_exts = .pyc,.git,.gitignore
通过以上步骤,应该能够成功将 Kivy 应用打包为 Android APK。关键要点:
如果在具体步骤中遇到问题,可以查阅 Buildozer 官方文档 或 Kivy 社区获取更多帮助。
本文作者:sea-whales
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!