类 | 实例 |
---|---|
主机环境 | 芯片:M1(arm64) 操作系统:macOS Monterey 12.2.1 |
编程语言 | python3 |
UI库 | kivy https://kivy.org/doc/stable/ |
打包工具 | buildozer https://buildozer.readthedocs.io/en/latest/ |
apk传输方式 | 微信(挫但稳) |
搞了2天,总算把路给打通了!长征血泪史!记之以慰吾心!详见上表官网教程
一、homebrew配置
- 下载homebrew包管理工具
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 切换homebrew国内中科大源,不然很慢,你懂的!参考链接:https://blog.csdn.net/xiewanchen0708/article/details/128232697
cd "$(brew --repo)" && git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
- 更新homebrew源
brew update
二、安装mac下的开发的一些基本包
可能不完整,但可根据后面抱错提示再补安装
- 安装homebrew包
$ brew install autoconf automake cmake cython libtool openjdk@11 openssl@3 pkg-config sqlite pip3
$ brew reinstall --build-from-source sdl2 sdl2_image sdl2_ttf sdl2_mixer
- 将pip源切换为国内源
编辑~/.config/pip/pip.conf文件,切换为清华源
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
- 安装Cython和kivy和buildozer,实际上,buildozer打包时会检测并自动安装依赖包。对不同平台windows、macOS、linux、BSD、RPi树莓派、Android、iOS、Anaconda的构建参考链接:https://kivy.org/doc/stable/gettingstarted/installation.html
$ python3 -m pip3 install --user --upgrade Cython==0.29.33 virtualenv //Cython版本3.x我编译没通过
$ pip3 install -U kivy buildozer
三、创建简单kivy工程
- 复制kivy官网实例到工程目录文件paint/main.py
#!/bin/python3
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Color, Ellipse, Line
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
color = (random(), 1, 1)
with self.canvas:
Color(*color, mode='hsv')
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(points=(touch.x, touch.y))
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
class MyPaintApp(App):
def build(self):
parent = Widget()
self.painter = MyPaintWidget()
clearbtn = Button(text='Clear')
clearbtn.bind(on_release=self.clear_canvas)
parent.add_widget(self.painter)
parent.add_widget(clearbtn)
return parent
def clear_canvas(self, obj):
self.painter.canvas.clear()
if __name__ == '__main__':
MyPaintApp().run()
- 在paint目录进行初始化
$ cd paint && buildozer init
- 开始将python程序构建为apk包,期间会下一些包,且慢到我怀疑人生!如下图
$ buildozer android debug
- 期间buildozer下载gradle-7.4.1一直失败!报错信息:cannot access ~/.gradle/wrapper/dists/gradle-7.4.1-all/8bevta3mh7872g50ecurigeld(因为撞了墙,佛说回头是岸!)
解决办法:从腾讯源https://mirrors.cloud.tencent.com/gradle/
直接下载gradle-7.4.1-all.zip放到~/.gradle/wrapper/dists/gradle-7.4.1-all/8bevta3mh7872g50ecurigeld目录,重新buildozer android debug,编译出apk文件
- 最后在非常深的目录里找到的生成的apk包paint/.buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/myapp/build/outputs/apk/debug
- 下载kivy库后,在本机macOS直接python3 main.py如下图
- 手机上安装运行,如下视频
在手机上安装apk并使用