Kivy 新手入门避坑指南
Kivy 新手入门避坑指南
个人说说使用kivy的原因: 不会java, 不会C, 不会。。。 简而言之, 除了python, 啥也不会。但是又想写点 android 的apk. 所以, kivy成了我唯一的选择了。。。 在此奉劝, 如果只是一开发安卓apk为主要目的, 还是不要用比较好。 虽然kivy的买点在跨平台, 但是实际上, 平台夸起来, 很吃力。
我说说我现在的进展吧: (针对安卓)
- requests 库基本没问题
- Opencv 不完美。 可以配合摄像头做人脸识别等但是无法读取视频。 可以输出视频,但是格式有限制。
- imageio 输出gif
- PIL 基本没什么问题
- numpy ok
- 可开启http服务
- 可调用android web浏览器(java)
目前来说, 其实已经可以做很多事情了。不过得自己注意,电脑和安卓之间的兼容问题。
开始前的避坑
- python 版本
- 都2021年了, 不会真的还有人在用python2吧?? 不会吧不会吧不会吧??? 请赶紧退坑, 谢谢。
- python3 也不能乱用。 之前我用的 3.7.6, 然后打包request之后, 能用, 但是再出结果之后, 就会崩溃闪退。 我也不知道为啥。最后更具stack overflow 的解释, 换上了3.7.5, 就完全没问题了。 真的很奇奇怪怪= =
- 但是- - 目前我还是用的, 3.7.6。。。为什么? 俺也不知道。反正:不要用最新的不要用3.9,更加不要用4。 不听的老人言, 吃亏在眼前
- kivy和kivymd版本
- Kivy和kivymd版本倒是没这么多的肯。 但是,md的坑是真大。 如果用错了版本, 你就会发现, 官方文档好多是“错的”!!更不不能运行。 其实官方文档怎么会有问题呢? 动动脚趾头嘛?当然不会啦! 对一下版本号就知道了。 切换版本以后, 就好。所以, 版本可以瞎用, 自己明白就好
- 另外, kivy和kivymd版本, 自己瞎用无所谓, 但请一定记得, 测试和打包的版本,保持一致。 不然, 到时候肯定会有问题的。 开始不会怎么样= = 东西多了复杂就会发现, 电脑和手机结果, 不一样, 甚至手机直接闪退 = =
- 打包
- buildozer 打包hello world, 还是很方便的, 尤其是环境准备好之后, 再次打包就简单快了。
- 对于国内来说, 打包大部分失败的原因都是, 网络链接问题, 下载失败。所以, 没事的话, 先多重复几次, 然后盯一下卡在了哪里。 一般是先卡很久, 然后才会报错。
- 更复杂的东西, 比如打包opencv, 需要自己给sdk, 这个就麻烦了。 不过也只是第一次麻烦, 会了以后, 其实蛮简单的。
- 有些东西, 是真的没发打包= =(打包了也没法用)可能需要更特殊手段。 这就看大家大显神通了
- 报错
- 如果在电脑端运行的报错, 都看不懂的话, 那真的, 求你了, 放弃kivy吧。你大概适合换一个饭碗\兴趣。python的错误, 都是精确到具体哪一行哪一個函数的说- -
- adb logcat 安卓报错
adb 报错的话, 一般来说, 也是python的运行问题。 如果这样的话, 只要在日至里搜寻I python
就好。 对于linux, 可以直接adb logcat| grep "I python"
再复杂的话, 就可以看看I python
前面的编号,然后抓去这一个ID, 就可以获得这个程序所有的 adb log 了。但是这个内容报错- - 就会比较复杂了 = = 反正我是看不懂的。 贴上 stack overflow 也从来没有被回答过- - 我贴的几个= = 好难呀。
- 路径
- 安卓文件安装后, 会在/data目录下创建该app的文件夹。你在使用对应app的时候,是有读写权限的。 但是在其他地方, 比如自带的文件管理器, 对该app没有任何读写权限。 所以, 你的把想保存的东西放在别的地方。 用户自己有读写权限的根目录, 一般为
/storage/emulated/0
。
- 安卓文件安装后, 会在/data目录下创建该app的文件夹。你在使用对应app的时候,是有读写权限的。 但是在其他地方, 比如自带的文件管理器, 对该app没有任何读写权限。 所以, 你的把想保存的东西放在别的地方。 用户自己有读写权限的根目录, 一般为
- icon-font 消失
- 请加入字体
sdl2_ttf==2.0.15
在 requirements那里
- 请加入字体
kivy 及其打包环境快速配置
首先, 这是我的系统环境:
██████████████████ ████████ ken@manjaro ██████████████████ ████████ OS: Manjaro 21.0.5 Ornara ██████████████████ ████████ Kernel: x86_64 Linux 5.4.118-1-MANJARO ██████████████████ ████████ Uptime: 20h 14m ████████ ████████ Packages: 1599 ████████ ████████ ████████ Shell: zsh 5.8 ████████ ████████ ████████ Resolution: 1920x1080 ████████ ████████ ████████ DE: GNOME 3.38.5 ████████ ████████ ████████ WM: Mutter ████████ ████████ ████████ WM Theme: Matcha-dark-sea ████████ ████████ ████████ GTK Theme: Matcha-sea [GTK2/3] ████████ ████████ ████████ Icon Theme: Papirus-Dark-Maia ████████ ████████ ████████ Font: Noto Sans 11 ████████ ████████ ████████ Disk: 705G / 1.5T (50%) CPU: Intel Xeon E3-1535M v6 @ 8x 4.2GHz [77.0°C] GPU: Quadro M2200 RAM: 4366MiB / 64042MiB
这里, 根据 john100 2021 在 arch 论坛的建议, 直接先安装 python 3.7.6, 然后配置一个虚拟环境
安装 Python
|
kivy 和buildozer
这里我用力清华镜像。 但是清华镜像好像不稳定。 有时候, 直接下载还快。
|
关于 buildozer, 还有一些小东西要安装的, 比如说, java, android-tools. 不同平台安装不一样。 我的是manjaro
|
然后就可以直接打包测试了。找个hello world 的帖子, 然后直接打包网络没啥问题的话, 就直接成功啦!
有些小问题, 记录在 Karobben Blog了 关于安装 sdk为了打包opencv, 也放哪里了
其他
打包 opencv:我的博客
上手项目练习:简单工具箱
关于报错:如何看kivy的报错
所有的kivy 帖子: Kivy 合集
项目展示
inclem.net 介绍了3款完成度非常高的精美kivyapp(本人没有上手测试), 分别为
- Boardz (滑雪游戏)
- Kognitivo (益智游戏)
- Barly (文字游戏)
本人在写一个完程度不高, bug很多的工具箱。 主要基于opencv
Karobben GitHub
手把手教程:点击我
另外, 写了个垃圾爬虫程序,百度统计 但是好像不能用了- -百度json格式改了, 我懒得更新