想法:
想着写一个app在安卓手机上用,原本使用pyqt来写但是好像到手机上很麻烦,就使用kivy库来写用Buildozer来打包到安卓手机上
流程:
1.使用kivy库写一个界面 2.在windows系统上安装Windows Subsystem for Linux (WSL )3.下载Ubuntu(22.04.5) 4.安装必要的包(python,pip,和生成Android APK 所需的工具)5.创建Buildozer 配置文件 6.构建你的 APK文件
构建一个简单的kivy界面:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
# 定义布局类
class HelloWorldLayout(BoxLayout):
def on_button_press(self):
self.ids.hello_button.text = "Button Pressed!"
# 定义应用程序类
class HelloWorldApp(App):
def build(self):
return HelloWorldLayout()
# 启动应用
if __name__ == "__main__":
HelloWorldApp().run()
假如你的 Python 类名是 HelloWorldApp
,Kivy 会自动寻找名为 helloworld.kv
的 KV 文件(类名转换为小写)。
<HelloWorldLayout>:
orientation: 'vertical'
Button:
id: hello_button
text: 'Hello World'
font_size: 32
size_hint: 0.5, 0.5
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
on_press: root.on_button_press()
要注意这里的文件名应该为helloworld.kv ,要不然就不能识别,变得黑屏。
Buildozer:
但是这个库只能在linux,macos上使用,所以选择在windows系统上使用WSL来使用Buildozer
WSL:
WSL(Windows Subsystem for Linux)是一个由微软开发的兼容层,使用户能够在Windows操作系统上原生运行Linux二进制可执行文件。WSL允许用户在Windows环境中使用Linux命令行工具和应用程序,而无需使用虚拟机或双启动。
1.使用管理员身份运行Powershell,输入
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
就可以看到以下结果,这代表着 已经成功启用Windows 子系统 Linux(WSL)功能
2.在Microsoft Store中下载ubuntu
之后也可以查看你所下载的版本,还是在Powershell中运行
wsl -l -v
可以看到输出代表下好了
系统更新和必要软件包的升级:
更新你的包列表并安装可用的更新
sudo apt update
sudo apt upgrade -y
安装 Python、pip、git 和其他必需的工具
sudo apt install -y python3 python3-pip build-essential libssl-dev libffi-dev git
安装 Buildozer
pip3 install --upgrade buildozer
安装一些额外的依赖
sudo apt install -y libncurses5:i386 libstdc++6:i386 zlib1g:i386 libz1:i386 openjdk-8-jdk
pip3 install --upgrade cython
初始化 Buildozer 项目:
1.点击刚刚下好的Ubuntu22.04,在终端中输入
cd /mnt/d/HELLOWORLD
我是放在D盘下面的,要记得更改
有的时候会出现这个问题
jcwjcw@JCW:~$ cd /mnt/d/HELLOWORLD
-bash: cd: /mnt/d/HELLOWORLD: Input/output error
查了后意思大概是wsl出现了一些临时的问题,或者wsl没有正确挂载windows系统
解决方法,在Powershell中重启wsl,进入Powershell,输入指令
wsl --shutdown
再重新进入Ubuntu22.04,发现可以了