📅  最后修改于: 2023-12-03 15:08:18.862000             🧑  作者: Mango
Kivy 是一款使用 Python 语言编写的开源跨平台 GUI 应用程序框架,采用 MIT 许可证开源,可运行在包括 Windows, OSX, Linux, Android 和 iOS 平台等多个操作系统上。本文将介绍如何使用 GitHub 操作 YML 文件从 Kivy 创建 APK 文件。
在操作之前,需要先完成以下准备工作:
创建名为 buildozer.yml
的 YML 文件,可使用以下命令创建该文件:
buildozer init
运行命令后,Buildozer 会自动创建一个默认的 buildozer.yml
文件,里面包含了一些默认配置。
打开 buildozer.yml
文件,进行以下几个方面的配置:
修改 title
和 package.name
为应用名称和包名,例如:
title: My Kivy App
package.name: com.example.mykivyapp
确认编译要求正确,根据你的应用所需的功能进行选择。例如,如果你的应用需要使用网络功能,则需要添加以下行:
requirements:
- kivy
- requests
这将确保 kivy
和 requests
模块已安装。可根据实际需要添加其他模块。
为 APK 文件指定版本号,以确保每个新版本都具有唯一的版本号。例如:
version: 0.1
为 APK 文件提供签名文件,替换以下行为你的签名文件信息:
android:
...
# Replace with path to your keystore
keystore: /path/to/your/keystore.keystore
# Replace with keystore password
keystore.password: mypassword
# Replace with key alias
key_alias: mykeyalias
# Replace with key password
key_password: mykeypassword
为 APK 文件指定构建输出路径和名称,例如:
# Output (else by default they would finish in dist/)
output_dir: /path/to/your/output/folder
output_name: myapp
在 GitHub 仓库中创建名为 .github/workflows/build.yml
的文件,对于该文件的内容,可根据以下模板进行编辑:
name: Build APK
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential \
ccache \
git \
libffi-dev \
libssl-dev \
python3 \
python3-pip \
zlib1g-dev
pip3 install --user --upgrade pip
pip3 install --user --upgrade cython virtualenv
pip3 install --user --upgrade buildozer
- name: Build APK
run: |
buildozer android debug
将 buildozer.yml
和 .github/workflows/build.yml
文件提交到 GitHub 仓库中,然后创建一个新的分支并将其推送到远程仓库中。当完成了这些步骤后,将自动触发 GitHub Actions 工作流。
在 GitHub 仓库的 Actions 标签页下,你可以查看工作流的状态和输出。当工作流运行完成后,将在指定的 output_dir
目录中生成 APK 文件。
通过以上步骤,你可以使用 GitHub 操作 YML 文件从 Kivy 创建 APK 文件。这样,你每次更新代码后,都可以使用工作流来自动构建新的 APK 文件。除了使用 Buildozer 和 GitHub Action 外,你也可以使用其他构建,例如 Jenkins 等,以达到自动化编译的效果。